2010-04-02 19 views
7

Come utilizzare la funzione sha512 per PHP?Protezione password PHP: da md5 a sha512

Posso sostituire tutte le mie funzioni md5 con la funzione sha512?

Devo scaricare qualcosa se sì cosa?

Qualcuno può fornire degli esempi?

risposta

6

La funzione hash(), fornito con PHP> = 5.1, dovrebbe essere in grado di generare gli hash SHA512 - è possibile verificare questo chiamando il hash_algos() funzione, che elenca gli algoritmi di hashing supportati.


Ad esempio, è possibile utilizzare:

$sha512 = hash('sha512', "Hello, World!"); 
var_dump($sha512); 

E si otterrebbe:

string '374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387' (length=128) 


E, sul mio sistema, il seguente porzione di codice:

$supported = hash_algos(); 
var_dump($supported); 

Indica t Sono supportati cappello 42 algoritmi di hashing:

array 
    0 => string 'md2' (length=3) 
    ... 
    6 => string 'sha384' (length=6) 
    7 => string 'sha512' (length=6) 
    8 => string 'ripemd128' (length=9) 
    9 => string 'ripemd160' (length=9) 
    ... 
    40 => string 'haval224,5' (length=10) 
    41 => string 'haval256,5' (length=10) 



Inoltre, con PHP> = 5.3, si dovrebbe essere in grado di utilizzare la funzione openssl_digest():

$sha512 = openssl_digest("Hello, World!", 'sha512'); 
var_dump($sha512); 

(Sì, i parametri non sono nello stesso ordine con cui hash() - la magia di PHP, qui ...)

E, per ottenere l'elenco degli algoritmi supportati, è possibile utilizzare openssl_get_md_methods().

Sul mio sistema, questo mi dà 22 algoritmi supportati.

+0

Se il software deve essere eseguito su più macchine, assicurarsi che sia disponibile su tutte le macchine. – TheJacobTaylor

+0

Puoi fornire un semplice esempio di login con password, se non lo richiede molto :) – PeAk

+1

Questo è un po 'più complicato di questo ^^ Ma l'idea di base è: ottenere la password che l'utente ha postato ;; hash it ;; confronta tale hash con la password hash che è memorizzata nel database per il login fornito dall'utente ;; se corrispondono, va bene, e puoi impostare qualcosa in '$ _SESSION' per indicare che l'utente è loggato. –

1

Solo per curiosità, perché vuoi sostituire la funzione MD5?

È relativamente efficiente. Se aggiungi un sale, è davvero fastidioso fare il reverse engineer. Qualcuno avrebbe dovuto eseguire una codifica forza bruta di tutte le password in cerca di una partita. Senza un sale, caso comune brevi stringhe inferiore tutte le stringhe di lettere sono stati cracking e memorizzati in un database.

vorrei solo aggiungere un sale e lo chiamano buono.

Jacob

+0

come farei un sale più importante come potrei generare un sale casuale? – PeAk

+0

+1 e anche, da MD5 a SHA512 ... un bel salto lì. –

+0

meglio sicuro quindi mi dispiace. – PeAk

0

checksum sono per checksum generano, HMAC è forse il modo preferito per generare hash salate di stringhe richiedono hashing fissaggio.

hash_hmac('sha512', 'important string', 'salt'); 
Problemi correlati