Aquí está el ejemplo de la PHP manual page for crypt():(PHP) Cómo aplicar correctamente la cripta()
<?php
$password = crypt('mypassword'); // let the salt be automatically generated
/* You should pass the entire results of crypt() as the salt for comparing a
password, to avoid problems when different hashing algorithms are used. (As
it says above, standard DES-based password hashing uses a 2-character salt,
but MD5-based hashing uses 12.) */
if (crypt($user_input, $password) == $password) {
echo "Password verified!";
}
?>
Por qué funciona esto? Lo tomo 'mypassword'
es la contraseña que quiero que use el administrador real. Así que encripto eso primero, y lo configuro igual a $password
. Obviamente, debo necesitar almacenar eso en DB. Pero en las siguientes líneas se está utilizando como sal y con lo que estoy comparando, y no entiendo cómo crypt($user_input, $password)
puede ser igual a $password
, si en este último caso tengo idealmente la contraseña correcta como $user_input
pero salada con $password
que se compara con $password
. Tendría más sentido para mí si la última línea fuera
if (crypt($user_input) == $password) {
echo "Password verified!";
}
¿Qué no entiendo?
debe usar técnicas más avanzadas como md5, sha1 etc. – dusoft
hah. hah. hah. jaja. si solo estuvieras en este viaje épico conmigo, amigo mío. http://stackoverflow.com/questions/2235158/php-sha1-vs-md5-vs-sha256-which-to-use-for-a-php-login – sepiroth