2016-10-17 1 views
0

J'ai ce code:Comment décrypter une variable chiffrée "sha512"?

$password = vancab123;

password_hash(base64_encode(hash('sha512',$password, true)), PASSWORD_DEFAULT);

Base de données valeur stockée:

$password = $2y$10$jUa8ZEFBX5lfsBmySUnJFeSSyKwQ1v/emazJZPh8MwJ0g0lLbmjYC;

Mon problème:

Je l'ai utilisé sur la fonction "remember me". Si l'utilisateur a utilisé cette fonction, ses identifiants (email et mot de passe) seront sauvegardés pendant 7 jours en utilisant un cookie. Mon problème vient du fait que l'email et le mot de passe remplissent automatiquement les champs de texte de l'e-mail et du mot de passe, les caractères de la zone de texte du mot de passe sont trop longs car ils ont été hachés. Comment puis-je faire correspondre la longueur du mot de passe haché au mot de passe original/non haché?

+6

Vous ne faites pas. Vous ne pouvez pas déchiffrer un hachage. Les HASH ne sont pas des chiffrements – RiggsFolly

+0

@RiggsFolly Oh non. :(Merci mon pote –

Répondre

4

Et vous ne avez pas besoin de sauter à travers tous les cerceaux à utiliser password_hash et voici comment vérifier qu'un mot de passe entré correspond au mot de passe haché précédemment

Le point d'un HASH est qu'il ne peut pas (dans un SensAble cadre temporel) être reconverti à sa valeur d'origine. Au lieu de cela, vous devez le comparer en utilisant password_verify() à la valeur non hachée que l'utilisateur entre quand il revient et essayez de vous connecter en utilisant le même mot de passe.

$password = 'vancab123'; 

$hashed_pwd = password_hash($password); 

// test the hashed password 

if (password_verify($password, $hashed_pwd)) { 
    //password entered is OK 
} else { 
    //password entered is WRONG 
} 

AJOUT après avoir éclairci votre question:

Lire ceci pour un souvenir de moi fonctionnalité What is the best way to implement "remember me" for a website?

+0

Je l'ai utilisé pour la fonction "se souvenir de moi" Mon problème est que le mot de passe a été hashé donc les caractères sont trop longs dans la boite de texte donc mon problème est de raccourcir la longueur des caractères correspondra à la longueur du mot de passe non-haché –

+0

Le point d'un HASH est qu'il ne peut pas (dans un délai raisonnable) être reconverti à sa valeur d'origine.À la place, vous devez le comparer avec password_verify() 'à la valeur non hachée de l'utilisateur entre lorsque le retour et tenter de se connecter en utilisant le même mot de passe – RiggsFolly

0

Un hachage est une transformation à sens unique d'une valeur arbitraire. Ils sont par nature irréversibles. Dans votre cas, vous devrez hacher le mot de passe fourni par l'utilisateur, récupérer la valeur de la base de données et faire la comparaison des deux valeurs hachées. La seule alternative serait le paradigme derrière une attaque arc-en-ciel, dans lequel vous avez toutes les possibilités imaginables et les stockez comme paires de valeurs clés, mais c'est beaucoup de données.