creare una stringa di sale, che è una stringa e difficili da indovinare utilizzata per la crittografia . La stringa salt sarà utilizzato per creazione di hash oltre a determinare la loro validità . Un modo per creare una stringa di buon sale è da rimescolando un gruppo di caratteri a caso con la funzione md5 di PHP . L' output della funzione è un numero esadecimale a 32 cifre , dando più di 3,40 x 10 ^ 38 possibili combinazioni . Ad esempio , includere qualcosa come il seguente nel codice PHP :
$ sale = md5 ( " 4hJUd5sPP97hT " ) ;
2
Combina il testo con la stringa di sale con l'operatore di concatenazione , che è in realtà un periodo , e cifrare con la funzione md5 . Per esempio, se si crittografa le password , digitare:
$ password = " Us54EEh5R " ;
$ cifrato = md5 ( . $ Password $ sale) ;
"Rainbow tabelle " sono i database utilizzati per il cracking hash MD5 , la più grande delle quali hanno tra 10 e 20 miliardi di entrate . Anche se un database ha avuto 100 miliardi di hash MD5 distinte , che è meno di uno su 10 ^ 27 possibili combinazioni . Se una goccia d'acqua è di circa 1/10 cm ^ 3 , ci vorrebbero circa 1,4 x 10 ^ 25 gocce per riempire gli oceani della Terra . Pertanto , arcobaleno tabelle ammontano a meno di un calo in tutti gli oceani della Terra . Se la stringa di sale è buono , non vi è quasi alcuna possibilità l'hash cifrato è in un database . Anche se uno dei database avevano lo stesso hash , la stringa utilizzata per creare sarebbe diverso da quello nel database, perché non possono sprecare spazio prezioso database sulle infinite combinazioni di password MD5 - salate . Queste banche dati sono in corso dopo gli obiettivi molto più semplici .
3
Verificare gli hash in base alle esigenze , creando l'hash come avete fatto prima e confrontandolo con l'originale. Nel caso di password , memorizzare le password crittografate in un database . Quando qualcuno cerca di utilizzare una password , criptare la password immessa con il sale , e confrontarlo con la copia del database . In questo modo, anche l'amministratore del database non conosce nessuna delle password . Ad esempio, digitare :
$ encrypted_entry = md5 ( $ voce $ sale. ) ;
If ( $ encrypted_entry == $ crittografata ) $ valido = TRUE ;
altro $ valido = FALSE;
Programmazione © www.354353.com