Comment convertir le hachage de mot de passe de MD5 en SHA?

J'ai eu une vieille application qui a d'utilisateur mots de passe stockés dans la base de données avec un hachage MD5. Je voudrais la remplacer par quelque chose dans le SHA-2 de la famille.

J'ai pensé à deux façons de le faire, mais ils semblent plutôt maladroit.

1) Ajouter un booléen "drapeau" sur le terrain. La première fois que l'utilisateur s'authentifie après cela, remplacer le mot de passe MD5 hash avec le SHA hachage de mot de passe et cochez la case. Je peux ensuite, vérifiez le drapeau pour voir si le hachage de mot de passe a été converti.

2) Ajouter un deuxième champ de mot de passe pour stocker le SHA de hachage. La première fois que l'utilisateur s'authentifie après cela, hacher le mot de passe avec SHA et de le stocker dans le nouveau champ (probablement de supprimer leurs hachage MD5 en même temps). Ensuite, je peux vérifier si le SHA champ a une valeur; essentiellement, cela devient mon drapeau.

Dans les deux cas, l'authentification MD5 devrait rester en place pendant un certain temps pour tous les utilisateurs qui se connectent rarement. Et tous les utilisateurs qui ne sont plus actifs ne seront jamais passé à SHA.

Est-il une meilleure façon de le faire?

source d'informationauteur Bruce Alderman