Pregunta

Suponiendo que tenemos una sal que está en la base de datos y que se ha generado de esta manera

$ salt = time ();

¿Cuál es la diferencia entre estas 2 líneas?

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

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

No producen la misma salida. El primero, la función hash toma 2 parámetros, mientras que el hash_hmac necesita 3 parámetros. Por lo tanto, pensaría que podemos obtener ese tercer parámetro adicional usando $ salt por separado (para cumplir con el tercer parámetro) en lugar de concatenarlo con la contraseña ( $ password. $ Salt ) como hicimos en la línea 2. Pero no es tan simple, los 2 resultados son diferentes. ¿Por qué? ¿Qué está pasando exactamente aquí?

¿Fue útil?

Solución

Porque HMAC SHA-1 no es lo mismo que SHA-1 con el mensaje y la clave concatenados. HMAC es más como sha1 ($ salt. Sha1 ($ salt. $ Contraseña)) , pero no exactamente. Wikipedia tiene una buena descripción de HMAC .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top