2016-03-01 27 views
5

come confrontare due password di bcryptcome confrontare due criptato (bcrypt) password nel laravel

$pass1 = '$2y$10$ooPG9s1lcwUGYv1nqeyNcO0ccYJf8hlhm5dJXy7xoamvgiczXHB7S'; 

E

$pass2 = '$2y$10$QRgaiS6bpATKKQeT22zGKuHq.edDfXQc2.4B3v.zaN.GtGwoyQuMy'; 

Sia $ pass1 & $ pass2 sono bcrypt per 'test'.

Come posso verificare l'uguaglianza. senza l'utilizzo di testo 'test' in questo modo

$hash1 = Hash::make('test'); 
$hash2 = Hash::make('test'); 

var_dump(Hash::check('test', $hash1) && Hash::check('test', $hash2)); 
+0

Date un'occhiata a questo, fratello. [Spiegazione di Laravel Hash] (https://mnshankar.wordpress.com/2014/03/29/laravel-hash-make-explained/). –

risposta

3

Non si può effettivamente confrontare due cifrate password bcrypt tra loro direttamente come stringhe perché la crittografia contiene sale che rende gli hash diverso ogni volta.

+0

'test' è solo per esempio, in realtà tutte le password sono memorizzate in db e non posso decifrare di nuovo per confrontare, qualsiasi altra alternativa da controllare. – Jija

+1

Questo è quello che intendo, però. Non è possibile confrontare direttamente le password crittografate. È possibile eseguire Hash :: check() su ognuna se si conosce la password originale ma è impossibile confrontare due password briptate. Ho aggiornato la mia risposta per semplificare la situazione. – Joseph

10
if(Hash::check('plain-text-password',$cryptedpassword)) { 
    // Right password 
} else { 
    // Wrong one 
} 
0

Si può semplicemente utilizzare Hash::check() metodo esempio:

if(Hash::check('plain-text', $hashedPassword)) { 
    return true; 
} 

riferimento https://laravel.com/docs/5.5/hashing