Qual è la migliore alternativa all'algoritmo Md5 per PHP per crittografare i dati utente come password e altri dati protetti, memorizzati nei database MySQL?Alternativa Md5 in PHP?
risposta
SHA512 non è una scelta terribile. Ma non passerà molto tempo prima che sia rotto per la maggior parte delle password. Prendi lo Jeff's Advice. Utilizzare bcrypt o PBKDF2. Sono resistenti all'EC2 o ad altre tecniche di elaborazione parallele. Probabilmente non immune, ma resistente.
Il motivo per cui un hash migliore non è migliore in questo caso è ABC
in MD5 diventa un valore e ABC
in SHA512 diventa un valore. Il calcolo di tutte le password di 3 lettere è actually easier for SHA512 than it was for MD5. La chiave è essere difficili da fare. Ciò significa un hash lento, uno che utilizza molta RAM e/o uno che non può essere fatto facilmente su EC2.
La scelta migliore è NON utilizzare più le password da sole. Decidi se il login è davvero necessario per il tuo sito, e se lo è, prova prima a utilizzare un provider di terze parti. Se questa non è un'opzione, considera una password + token da RSA. Usa solo una password se non hai altre opzioni valide.
Quando si esegue l'hashing di una password, la chiave è hash (password + sale) e il sale deve essere univoco per utente e dovrebbe anche essere difficile o impossibile da indovinare. L'utilizzo del nome utente soddisfa i primi criteri ed è meglio di niente sale o lo stesso sale per ogni utente, ma un salt casuale unico per ogni utente è una scelta migliore.Idealmente in un database separato, se non in una posizione, con le proprie credenziali. Dovrebbe anche essere impostato non sul nome utente, ma su user_id o anche su un hash di user_id. Volete che il database sia a prova di SQL injection. Accettare nessun input dell'utente che non è hash è un buon modo per farlo. E sarebbe saggio lasciare che la query stessa faccia l'hashing. Lento? Sì, ed è anche una buona cosa.
Il sale stesso dovrebbe contenere tutti i dati difficili da prevedere. Nome utente + ID utente + Timestamp + garbage da dev/urandom + l'ultimo tweet con la parola taco in esso. Più è, meglio è. SHA512 è una buona scelta di hash qui.
Riepilogo: hash = bcrypt (password + sale), salt = sha512 (nome utente + user_id + timestamp + microtimestamp + dev/bit casuali + altro rumore).
Se sei ancora preoccupato dopo tutto questo. Sentiti libero di SHA512 la password briptata. Otterrai la forza di SHA512, che, una volta scoperto, rivela solo un hash crittato dalla forza più forte.
È possibile utilizzare hash in questo modo, si dispone di un ampio algoritmo per l'hash dei dati.
hash('sha256', $data);
MD5 non è più consigliato. La maggior parte delle installazioni php include l'estensione hash
. La scelta migliore per una funzione di hash sarebbe attualmente SHA-512. È possibile utilizzare SHA-512 con la seguente funzione:
<?php
function sha512($string) {
return hash('sha512', $string);
}
?>
Non ci sono altre alternative con dimensioni più piccole di uscita se lo si desidera, ad esempio SHA-256
o RIPEMD-160
.
Aggiornamento: Leggendo la tua domanda aggiornata, suggerisco la funzione php crypt.
Falso. sha384 è più sicuro: http://en.wikipedia.org/wiki/SHA_hash_functions –
Più sicuro di 'SHA-256', sì. Più sicuro di 'SHA-512', no. Dove hai letto questo? –
Prova l'hash funzione PHP() http://php.net/manual/en/book.hash.php
codice Esempio:
$hash = hash('SHA512', $pass);
Questo trasforma questo:
SHA512("The quick brown fox jumps over the lazy dog")
Into:
0x07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
Ulteriore lettura: 012.351.http://en.wikipedia.org/wiki/SHA-2
- 1. PHP - MD5, SHA, Hashing security
- 2. md5 con Android e PHP
- 3. PHP md5() fornisce output diverso da MySQL md5
- 4. Invio multipart/alternativa con PHP mail()
- 5. Protezione password PHP: da md5 a sha512
- 6. Alternativa a "header" per reindirizzare in PHP
- 7. Buona alternativa a eregi() in PHP
- 8. Classe dizionario PHP? o alternativa?
- 9. MD5 hash in silverlight
- 10. Funzione MD5 in SQLite
- 11. Alternativa PHP a mysql_data_seek per ODBC
- 12. Alternativa PHP per il tessuto di Python
- 13. Alternativa per la funzione PHP deprecata: eregi_replace
- 14. Alternativa per $ _SERVER ['HTTP_REFERER'] Variabile PHP in MSIE
- 15. Alternativa delle funzioni di esplosione/implode di php in C#
- 16. Padding in MD5 Hash Algorithm
- 17. Digest :: MD5 in Ruby 1.9.3
- 18. MD5 Funzione hash in Excel?
- 19. Perché "hash ('md5', 'string')" più veloce di "md5 ('string')"?
- 20. Sintassi alternativa per l'interruttore
- 21. Converti MD5 in stringa in java
- 22. Alternativa PostSharp
- 23. parseInt alternativa
- 24. RoR - Generazione MD5
- 25. Java calcolare hash MD5
- 26. md5 errore del modulo
- 27. criptare e decodificare md5
- 28. MD5 Hash From String
- 29. Spring Security Encrypt MD5
- 30. Python hash MD5 confronto
md5 è stato violato, utilizzare sha1 –
whirlpool funziona bene. Dovresti dire però cosa stai facendo con esso. – Brad
Dipende da cosa si intende usare. Per il materiale di hashing per verificare i duplicati, MD5 è superbo! –