PHP crypt () o phpass para almacenar contraseñas?

5

Al almacenar las contraseñas, ¿debo usar PHP co% comp_de% o phpass ?

Si utilizo crypt , ¿debo usar crypt o CRYPT_SHA512 ?

    
pregunta willwill 12.07.2012 - 08:25
fuente

3 respuestas

10

Para almacenar contraseñas, use PHPass

ejemplo de código usando phpass:

require('PasswordHash.php');

$pwdHasher = new PasswordHash(8, FALSE);

// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );

// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
    echo 'password correct';
} else {
    echo 'wrong credentials';
}

internamente, PHPass usa la función crypt() de PHP, pero todos los detalles desagradables ya se han resuelto.

Actualmente, el uso de CRYPT_BLOWFISH es la mejor práctica. CRYPT_BLOWFISH en PHP es una implementación del hash Bcrypt. Bcrypt se basa en el cifrado de bloque Blowfish, haciendo uso de su configuración de teclas costosa para ralentizar el algoritmo.

Si usa PHPass como en el ejemplo anterior y PHP > = 5.3, usará BCrypt.

    
respondido por el Jacco 12.07.2012 - 13:30
fuente
0

La respuesta depende de lo que quieres lograr. Diferentes métodos son para diferentes situaciones. Hay otra buena biblioteca llamada PHP Secure Communications Library que probablemente pueda usar (lea ¿Quién debería usar phpseclib? ).

    
respondido por el Anton Babenko 12.07.2012 - 10:08
fuente
-1

phpass está limitado por el hecho de que intenta ser compatible con PHP4. Citando el código fuente:

    # We're kind of forced to use MD5 here since it's the only
    # cryptographic primitive available in all versions of PHP
    # currently in use.  To implement our own low-level crypto
    # in PHP would result in much worse performance and
    # consequently in lower iteration counts and hashes that are
    # quicker to crack (by non-PHP code).

MD5 es totalmente inseguro. ¿Tu base de código va a ser compatible con PHP4? Si no, sugeriría simplemente usar la función hash () incorporada de PHP y pasarla a 'sha512' o algo así.

    
respondido por el dotlive 16.07.2012 - 16:06
fuente

Lea otras preguntas en las etiquetas