2012-05-07 5 views
0

Salut les gars récemment, je commencé à utiliserphp conversion de tous les mots de passe dans DB

$salt = $uniqueSalt; 

$cryptpassword = md5($salt.$password); 

Comment puis-je convertir tous les mot de passe dans ma base de données MySQL avec cela, il ne marche pas donc une incidence sur les utilisateurs?

les mots de passe dans mes atm de base de données sont en texte clair, je veux convertir tous les mots de passe en texte clair pour md5 avec le sel

+1

Un sel ne doit pas être unique pour chaque hachage. – Gumbo

+3

@Gumbo: Ne voulez-vous pas dire qu'un sel * devrait être * unique pour chaque hash? –

+1

@Rocket Oui, bien sûr; J'ai modifié la phrase et pas tout à fait le contraire de ce que je voulais dire. Malheureusement, je ne peux pas le modifier à nouveau. – Gumbo

Répondre

3

Je vous recommande de lire plus sur les sels et comment les utiliser. Ils ne devraient pas être une chaîne constante, mais quelque chose d'unique à chaque utilisateur. Par exemple, nom d'utilisateur. Ou mon préféré: date d'enregistrement (avec la précision de 1 seconde, bien sûr). En outre, si vous stockez les mots de passe dans votre base de données en tant que hachages MD5, il n'y a aucun moyen de convertir les mots de passe. MD5 est un hachage à sens unique, vous ne pouvez pas obtenir les mots de passe d'origine afin d'appliquer le sel et rehash. Si vous voulez absolument appliquer ceci, alors la seule façon de le faire est de forcer chaque utilisateur à changer son mot de passe et à appliquer le nouvel algorithme quand c'est le cas. Il y a 2 problèmes avec ceci:

  • la plupart des utilisateurs ne vont pas aimer ce
  • vous devez garder une trace dont l'utilisateur a fait le changement et qui ne l'a pas. Ceci est pour éviter les problèmes lors de la connexion.
+1

Vous n'avez pas besoin de forcer les utilisateurs à changer leur mot de passe. Vous pouvez dès la connexion de l'utilisateur vérifier si elles sont déjà sur le nouveau système de hachage et si ce n'est pas vérifier son mot de passe avec l'ancien système et si c'est correct, générer le nouveau hachage basé sur le mot de passe qu'il a fourni. S'il était déjà sur le nouveau système, vérifiez simplement avec le nouveau système de hachage. Après un certain temps, vous pourriez forcer les utilisateurs à réinitialiser leur mot de passe pour passer au nouveau système de hachage. – Zombaya

+0

@Zombaya Vous avez raison. Je n'y ai pas pensé. Merci pour le conseil :) . –

+0

Il est préférable d'utiliser un nombre d'itérations en plus du hachage (le hachage MD5 est * très * rapide de nos jours, sans parler des tables arc-en-ciel). Et la meilleure façon d'appliquer un compte d'itération est d'utiliser un algorithme comme bcrypt ou PBKDF2. –

0

juste comme ceci, mais vous devez changer votre connexion, ainsi vous ne vérifiez pas leur mot de passe mais pour md5 ($ salt. $ Mot de passe);

mais comme mes forposters dit, ce ne est pas beaucoup securer et si le mot de passe isnt déjà clair dans votre base de données que vous obtenez probablement pas comme le texte brut si elle a été hachée

Questions connexes