Nwlapcug.com


Come creare chiavi segrete in PHP

Come creare chiavi segrete in PHP


L'algoritmo di Digest del messaggio MD5 è un algoritmo di crittografia unidirezionale spesso utilizzato per la creazione di chiavi segrete, che sono chiamati gli hash MD5. Poiché la crittografia è un modo, due stringhe di testo differenti è in grado di produrre lo stesso MD5 hash, che significa che è Impossibile decrittografare esso. Ci sono un numero infinito di modi per produrre lo stesso hash. Tuttavia, gli hacker hanno modi per scoprire le stringhe utilizzate per creare gli hash, quindi vale la pena per crearli con cura. PHP: Hypertext Preprocessor è un linguaggio di programmazione che supporta MD5 e anche altri algoritmi di crittografia.

Istruzioni

1

Creare una stringa salt, ovvero una stringa nuove utilizzata per la crittografia. La stringa sale verrà utilizzata per la creazione di hash, nonché a determinare la loro validità. Un modo per creare una buona stringa salt è codificando un mucchio di caratteri casuali con funzione md5 di PHP. L'output della funzione è un numero esadecimale di 32 cifre, dandovi più di 3,40 x 10 ^ 38 combinazioni possibili. Ad esempio, includere qualcosa come il seguente nel codice PHP:

$salt = md5("4hJUd5sPP97hT");

2

Combinare il testo con la stringa sale con l'operatore di concatenazione, che è in realtà un periodo, e criptarlo con la funzione md5. Ad esempio, se si esegue la crittografia delle password, digitare:

$password = "Us54EEh5R";
$encrypted = md5($password.$salt);

"Rainbow tables" sono i database utilizzati per cracking hash MD5, il maggiore dei quali hanno tra 10 e 20 miliardi di voci. Anche se un database ha 100 miliardi distinti MD5 hash, che è meno di uno su 10 ^ 27 delle combinazioni possibili. Se una goccia d'acqua è circa 1/10 cm ^ 3, ci vorrebbero circa 1,4 x 10 ^ 25 gocce per riempire gli oceani della terra. Pertanto, tabelle rainbow ammontano a meno di una goccia in tutti gli oceani della terra. Se la stringa di sale è buona, non c'è quasi nessuna possibilità che l'hash crittografato è in un database. Anche se uno dei database ha avuto lo stesso hash, la stringa utilizzata per crearlo sarebbe diversa da quello del database, perché essi non può sprecare spazio prezioso database sulle infinite combinazioni di password MD5-salato. Tali database sono in corso dopo gli obiettivi molto più semplici.

3

Verificare gli hash come necessario creando l'hash come avete fatto prima e confrontandolo con l'originale. In caso di password, è possibile memorizzare le password crittografate in un database. Quando qualcuno tenta di utilizzare una password, crittografare la password immessa con il sale e confrontarlo con la copia del database. In questo modo, anche l'amministratore del database non conosce la password. Ad esempio, digitare:

$encrypted_entry = md5($entry.$salt);
Se ($encrypted_entry = = $encrypted) $valid = TRUE;
else $valid = FALSE;