Come creare chiavi segrete in PHP

May 17

Come creare chiavi segrete in PHP


Il Message-Digest algoritmo MD5 è un algoritmo di crittografia a senso unico, spesso utilizzato per la creazione di chiavi segrete, che sono chiamati hash MD5. Dal momento che la crittografia è un modo, due differenti stringhe di testo in grado di produrre lo stesso hash MD5, il che significa che non è possibile decifrare. Ci sono un numero infinito di modi per produrre lo stesso hash. Tuttavia, gli hacker hanno modo di scoprire le stringhe utilizzate per creare hash, quindi vale la pena di creare con cura. PHP: Hypertext Preprocessor è un linguaggio di programmazione che supporta MD5 e altri algoritmi di crittografia pure.

istruzione

1 Creare una stringa di sale, che è una stringa unguessable utilizzato per la crittografia. La stringa di sale sarà utilizzato per la creazione di hash oltre a determinare la loro validità. Un modo per creare una buona stringa di sale è da rimescolando un gruppo di caratteri casuali con la funzione MD5 di PHP. L'uscita della funzione è un numero esadecimale a 32 cifre, dando più di 3,40 x 10 ^ 38 possibili combinazioni. Per esempio, includere qualcosa di simile al seguente nel codice PHP:

$ Sale = md5 ( "4hJUd5sPP97hT");

2 Unire il testo con la stringa di sale con l'operatore di concatenazione, che è in realtà un periodo, e cifrare con la funzione MD5. Ad esempio, se si sta crittografia delle password, digitare:

$ Password = "Us54EEh5R";
$ Criptato = md5 ($ password $ sale.);

"Tavoli Rainbow" sono i database utilizzati per il cracking hash MD5, il più grande dei quali hanno tra 10 e 20 miliardi di entrate. Anche se un database ha avuto 100 miliardi di distinte hash MD5, 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 oceani della Terra. Pertanto, tabelle arcobaleno ammontano a meno di un calo in tutti gli oceani della Terra. Se la stringa sale è buono, non c'è quasi nessuna 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 delle infinite combinazioni di password MD5-salata. Queste banche dati sono in corso dopo che gli obiettivi molto più semplici.

3 Verificare hash in base alle esigenze, creando l'hash come avete fatto prima e il confronto con l'originale. Nel caso di password, memorizzare le password cifrate in un database. Quando qualcuno tenta di utilizzare una password, cifrare la password inserita 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 ($ ingresso $ sale.);
if ($ encrypted_entry == $ crittografata) $ valido = TRUE;
altro $ valido = FALSE;