2013-10-08 3 views
0

lorsqu'un nouvel utilisateur s'inscrit sur mon site, il utilise la méthode crypt() et le stocke ensuite dans la base de données.comment récupérer un mot de passe crypté dans php

Je veux faire une page "J'ai oublié mon mot de passe" où un utilisateur peut obtenir son mot de passe par courrier.

Ma question est simplement: comment puis-je convertir par exemple, ceci: "$ 2a $ 13 Ku2hb $/9aA71dPo/E015m.WBs6.RsDC/BL8jbz8dMRrmm0jGNIJRO" à "Certains mot de passe utilisateur"?

+0

Vous n'avez pas vouloir le faire. Aucun site sensé envoie des mots de passe par email. –

Répondre

0

La fonction crypt() utilise un cryptage unidirectionnel, ce qui signifie qu'il n'y a pas de fonction decrypt().

Fondamentalement, vous avez deux options:

votre propre 1.Mettre en œuvre méthode de cryptage que vous pouvez déchiffrer plus tard -pas recommandée do

un lieu 2.Mettre en œuvre « reset password »

+0

merci pour votre commentaire. Un 'mot de passe réinitialisé' semble une bonne idée! – Vandervidi

1

Faites ce que tous les autres sites Web font ces jours-ci - ne pas offrir un moyen de récupérer un mot de passe. Au lieu de cela, offrir un moyen de réinitialiser le mot de passe. Lorsque l'utilisateur clique sur "J'ai oublié mon mot de passe", envoyez-lui un lien qu'il pourra utiliser pour le réinitialiser. Définissez une date d'expiration sur la durée de vie du lien. Si vous voulez être très prudent, envoyez ensuite un e-mail confirmant qu'un mot de passe a été réinitialisé et un lien au cas où l'utilisateur ne le ferait pas lui-même.

+0

Puis-je faire deux fois la même chose? – Pascamel

0

Vous ne pouvez pas, car crypt() n'est pas une fonction de cryptage, c'est une fonction de hachage unidirectionnelle.

Remarque: Il n'existe aucune fonction de décryptage, car crypt() utilise un algorithme unidirectionnel.

De toute façon, vous ne devriez pas faire ce que vous décrivez. Si un attaquant a accès à l'email de quelqu'un et que chaque site web envoie le "mot de passe perdu" en clair à l'utilisateur sur demande, cet attaquant pourrait gagner encore plus de mots de passe.

Vous devriez laisser l'utilisateur entrer un nouveau mot de passe en prouvant son identité (peut-être en répondant à une question) et la possession de cet e-mail.

Questions connexes