Estoy buscando construir un sistema de inicio de sesión y después de leer el manual php cuando pasas una sal de 2 dígitos a la función crypt()
, devuelve una cadena hash, y los primeros 2 dígitos de la cadena son la sal que usaste.¿Por qué PHP crypt() antepone la sal al hash?
ejemplo:
$salt = "kr";
echo crypt("mysecret",$salt); //returns "kreOI.F7eOQMY"
Mi primer pensamiento fue, ¿no sería esto ayuda a alguien que está tratando de revertir el hachís?
Miré hacia arriba salt en la wikipedia que decía:
Para mayor seguridad, el valor de la sal se mantiene en secreto.
Así que no entiendo por qué la función cripta devolverá todos los valores hash precedidos con el valor de sal utilizado?
¿Hay alguna razón para esto? ¿Debería ser esto una preocupación de seguridad?
Es por eso que recomiendo una sal de dos partes. Uno en un archivo de configuración que es secreto pero igual para todos los usuarios, y una parte guardada junto con la contraseña que es diferente para cada usuario/generada aleatoriamente. – CodesInChaos
@meager, en realidad estoy tratando de actualizar uno que heredé. –
Wikipedia no debe tomarse como un evangelio. Las sales no son secretas –