PHP crypt () o phpass per memorizzare le password?

5

Quando si memorizzano le password, dovrei usare PHP integrato in crypt o phpass ?

Se utilizzi crypt , dovrei usare CRYPT_SHA512 o CRYPT_BLOWFISH ?

    
posta willwill 12.07.2012 - 08:25
fonte

3 risposte

10

Per memorizzare le password, utilizza PHPass

esempio di codice che usa 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 utilizza la funzione crypt() di PHP, ma tutti i dettagli cattivi sono già stati risolti.

Attualmente, l'utilizzo di CRYPT_BLOWFISH è la migliore pratica. CRYPT_BLOWFISH in PHP è un'implementazione dell'hash di Bcrypt. Bcrypt è basato sul codice a blocchi Blowfish, facendo uso della sua costosa configurazione di chiavi per rallentare l'algoritmo.

Se usi PHPass come nell'esempio sopra e PHP > = 5.3, utilizzerai BCrypt.

    
risposta data 12.07.2012 - 13:30
fonte
0

La risposta dipende da cosa vuoi raggiungere. Diversi metodi sono per diverse situazioni. C'è un'altra buona libreria chiamata PHP Secure Communications Library che puoi probabilmente usare (leggi Chi dovrebbe usare phpseclib? ).

    
risposta data 12.07.2012 - 10:08
fonte
-1

phpass è limitato dal fatto che stia cercando di essere compatibile con PHP4. Citando dal codice sorgente:

    # 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 è totalmente insicuro. Il tuo codice base supporta PHP4? Altrimenti suggerirei semplicemente di utilizzare la funzione hash () integrata di PHP e passare ad essa 'sha512' o qualcosa del genere.

    
risposta data 16.07.2012 - 16:06
fonte

Leggi altre domande sui tag