Domanda

Vorrei utilizzare Portable Password PHP quadro hashing per le password hash. Ma trovo che le sue dimostrazioni non usare il sale per l'hashing una password. Ma usare un sale fittizia per il controllo della password, che trovo strano e non capisco questa idea a tutti,

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

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

Mi chiedo, se voglio usare il metodo convenzione che posso generare il sale unica e conservarlo per ogni utente nel mio database, come posso utilizzare la password framework PHP hashing portatile per generare i sali?

Questa è la funzione che uso per le password hash, ma mi è stato detto che sha512 ha lo stesso problema come sha1, saggio fidarsi l'esperto come PHP portatile quadro hashing delle 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);
}

Fammi sapere se avete qualche idea. Grazie.

È stato utile?

Soluzione

phpass articolo collegato a da quella pagina:

Oltre l'hashing reale, phpass trasparente genera sali casuali quando una nuova password o passphrase è hash, e codifica per il tipo di hash, il sale e la password che si estende iterazione contare in "hash codifica stringa" che restituisca. Quando phpass autentica una password o passphrase contro un hash memorizzato, è Allo stesso modo trasparente estratti e usa l'identificatore del tipo di hash, il sale, e l'iterazione contare su il "hash codifica stringa". Così, si non c'è bisogno di preoccuparsi di salatura e che si estende da soli - phpass prende cura di questi per voi .

... quindi non è sorprendente che gli esempi non usano salatura! Si può essere over-condire il vostro codice.

Il codice di esempio con il sale manichino è un esempio di come prevenire un attacco di temporizzazione facendo in modo che se un utente esiste o no, la convalida degli utenti prende la stessa quantità di tempo, in modo efficace facendo un'autenticazione fittizia per gli utenti inesistenti. Ha bisogno di un manichino di sale, perché se l'utente non esiste, non avrà un sale memorizzato uso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top