Pregunta

Me gustaría usar Marco de hash de la contraseña de PHP portátil a las contraseñas hash. Pero encuentro que sus demostraciones no usan sal para hashing una contraseña. Pero usa una sal ficticia para verificar la contraseña que me parece extraño y no entiendo esta idea en absoluto,

$dummy_salt = '$2a$08$1234567890123456789012';

if (isset($dummy_salt) && strlen($hash) < 20)
        $hash = $dummy_salt;

Me pregunto, si quiero usar el método de convención que puedo generar la sal única y almacenarla para cada usuario en mi base de datos, ¿cómo puedo usar el marco de hash de hash Php Password Php para generar sales?

Esta es la función que utilizo para las contraseñas hash, pero me han dicho que SHA512 tiene el mismo problema que SHA1, en cuanto a confiar en el experto como el marco portátil de hashing Php Password,

function hash_sha512($phrase,&$salt = null)
{
    //$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';

    if ($salt == '')
    {
        $salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return hash('sha512',$salt.PEPPER_KEY.$phrase);
}

Avísame si tienes alguna idea. Gracias.

¿Fue útil?

Solución

Desde el artículo de PhPass vinculado a desde esa página:

Además del hashing real, PhPass genera transparentemente sales aleatorios cuando se ha hash de contraseña o frase de contraseña, y codifica el tipo de hash, la sal y la iteración de estiramiento de contraseña cuenta en la "cadena de codificación hash" que devuelve. Cuando PhPass autentica una contraseña o frase de pases contra un hash almacenado, extrae y usa de manera similar y usa el identificador de tipo hash, la sal y la iteración que cuenta con la "cadena de codificación hash". Por lo tanto, no necesita molestarse en sales y estirarse por su cuenta: PhPass se encarga de esto para usted.

... ¡Así que no es sorprendente que los ejemplos no usen saling! Es posible que esté superando su código.

La muestra de código con la sal ficticia es un ejemplo de cómo evitar un ataque de tiempo asegurándose de que si un usuario existe o no, la validación del usuario toma la misma cantidad de tiempo, efectivamente haciendo una autenticación ficticia para inexistente usuarios. Necesita una sal ficticia porque si el usuario no existe, no tendrá una sal almacenada para usar.

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