login non funzionante con hash_pbkdf2 [chiuso]

-1

Sto memorizzando la password usando hash_pbkdf2 ma ora ho trovato un problema

il mio codice:

1.for register

    $salt = openssl_random_pseudo_bytes(125);//salt
    $final_pass = hash_pbkdf2("sha512",$pass,$salt,1,125);//where $pass is the password entered by the user

2.per accedere

   $found_pass=$row['salt'];//retrieve the salt in the db
   $final_pass= hash_pbkdf2("sha512",$password,$found_salt,1,125);

il login sembra non funzionare perché è così? se qualcuno mi può aiutare

    
posta Immortal Dude 25.02.2014 - 22:24
fonte

1 risposta

1

Oh, Signore.

Guarda, Mr.coder. Nessuna mancanza di rispetto, ma se quel codice è destinato all'ambiente di produzione, chiedi a qualcun altro di farlo. So che tutti dobbiamo iniziare da qualche parte, ma non è qui che dovrebbe iniziare il codice di sicurezza di produzione. Detto questo, risolviamo la tua domanda.

Prima di tutto, stai usando hash_pbkdf2 , che è una funzione di PHP 5.5. Poiché stai già programmando la programmazione per PHP 5.5, è meglio utilizzare l'API password_hash . Hai solo bisogno di due input per password_hash ; la password e l'algoritmo ( PASSWORD_BCRYPT è raccomandato). L'output è una stringa contenente tutto ciò di cui hai bisogno (il sale generato automaticamente, la password, l'algoritmo e le iterazioni). Prendi quella stringa e la memorizzi nel database.

In secondo luogo, stai usando una iterazione. Qual e il punto? Si desidera rendere il processo il più lento possibile, mantenendolo il più possibile utilizzabile. Un'iterazione estremamente bassa. Inizia con 1000 come minimo.

Terzo, cos'è il sale gigantesco? Qualunque cosa superiore a 128 bit (16 byte) non è necessaria.

Per la verifica (login), è necessario un solo metodo; password_verify . Fornisci la stringa hash (dal database) e la password. L'output è o true per la verifica riuscita o false per la verifica non riuscita. Ecco un esempio:

//Register
$hashString_ToTheDB = password_hash($userPass, PASSWORD_BCRYPT);

//Login
$isCorrectPassword = password_verify($userPass, $hashString_FromTheDB);
    
risposta data 25.02.2014 - 22:56
fonte

Leggi altre domande sui tag