En supposant que nous avons un sel qui est dans la base de données et qui a été généré comme celui-ciComment ces 2 lignes de PHP sont-elles différentes?
$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 la même sortie. Le premier, la fonction hash
prend 2 paramètres, tandis que le hash_hmac
nécessite 3 paramètres. Vous pensez donc que nous pouvons obtenir ce troisième paramètre supplémentaire en utilisant le $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 dans la ligne 2. Mais ce n'est pas si simple, le 2 les résultats sont différents. Pourquoi? Que se passe-t-il exactement ici?
Je vois. Donc, lorsque vous utilisez HMAC, avez-vous toujours besoin de générer des sels aléatoires séparés pour chaque enregistrement à stocker dans la base de données? ou ne donnez-vous à HMAC qu'une chaîne standard, par ex. 'hash_hmac ('sha1', $ pass," standard ");' et aucun sel aléatoire n'est nécessaire? – Chris
sel aléatoire sera nécessaire de toute façon pour se protéger contre les arc-en-tables. – Etan
Merci Lukas et Etan. Éclairci maintenant. – Chris