Question

En supposant que nous ayons un sel qui est dans la base de données et qui a été généré comme ceci

$ salt = time ();

Quelle est la différence entre ces 2 lignes.

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

Ils ne produisent pas le même résultat. Le premier, la fonction hash prend 2 paramètres, alors que le hash_hmac nécessite 3 paramètres. Vous penseriez donc que nous pouvons obtenir ce troisième paramètre supplémentaire en utilisant $ salt séparément (pour remplir le troisième paramètre) au lieu de le concaténer avec le mot de passe ( $ password. $ Salt ) comme nous l'avons fait à la ligne 2. Mais ce n'est pas si simple, les 2 résultats sont différents. Pourquoi? Qu'est-ce qui se passe exactement ici?

Était-ce utile?

La solution

Parce que HMAC SHA-1 n’est pas identique à SHA-1 avec le message et la clé concaténés. HMAC ressemble plus à sha1 ($ salt. Sha1 ($ salt. $ Password)) , mais pas exactement. Wikipedia a une description agréable de HMAC .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top