Usando correctamente crypt () con SHA512 en PHP
Todos los ejemplos en línea muestran el uso de la cripta de esta manera:
$pass = crypt('something','He encontrado algunos de estos para ser útiles:rounds=5000$anexamplestringforsaltPero todos dicen que no debes definir las rondas o la sal.
Entonces, ¿cómo debo usarlo?
También tengo un problema: cuando ejecuto el código anterior, solo ejecuta 50 rondas en lugar de 5000 rondas como si el sistema lo estuviera deteniendo.
Cualquier ayuda será apreciada.
// - Solución - //
He encontrado algunos de estos para ser útiles:
Para generar sal:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
o
Si tiene un servidor Linux, esta es una forma mucho más aleatoria de generar sal.
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Codificación de la base 64 para garantizar que algunos caracteres no causen problemas a crypt
$salt = base64_encode($randomString);
Para Hashing:
$hashed = crypt($passwordInput, 'He encontrado algunos de estos para ser útiles:'.$salt);
Para confirmar:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Agradecimientos especiales a @lathspell por ayuda para llegar a la solución anterior **
);
Pero todos dicen que no debes definir las rondas o la sal.
Entonces, ¿cómo debo usarlo?
También tengo un problema: cuando ejecuto el código anterior, solo ejecuta 50 rondas en lugar de 5000 rondas como si el sistema lo estuviera deteniendo.
Cualquier ayuda será apreciada.
// - Solución - //
He encontrado algunos de estos para ser útiles:
Para generar sal:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
o
Si tiene un servidor Linux, esta es una forma mucho más aleatoria de generar sal.
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Codificación de la base 64 para garantizar que algunos caracteres no causen problemas a crypt
$salt = base64_encode($randomString);
Para Hashing:
$hashed = crypt($passwordInput, 'He encontrado algunos de estos para ser útiles:'.$salt);
Para confirmar:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Agradecimientos especiales a @lathspell por ayuda para llegar a la solución anterior **