Gli hash possono essere violati usando la forza bruta. Ciò significa testare l'hashing di tutti gli input possibili finché non ne trovi uno che genera l'output corretto. Per interrompere questa operazione, una funzione di hash utilizzata per la memorizzazione delle password o la derivazione delle chiavi deve essere deliberatamente lenta (in modo che il test di molti input richieda molto tempo).
Un sito come quello che menzioni può anche memorizzare una grande lista di coppie conosciute di input e output comuni. Quindi non hanno bisogno di fare una forza bruta ogni volta che qualcuno invia loro un hash per rompere - hanno solo bisogno di cercarlo sul tavolo. Per interromperlo, usi un salt (in modo che anche una password comune abbia un hash univoco).
Noterai che non conoscono il valore degli hash tutti , solo quelli comuni. Un esempio:
-
5f4dcc3b5aa765d61d8327deb882cf99
è correttamente invertito in password
, perché è nel loro database.
-
039c004d00c02a193144e96b3e8aa4ba
non può essere invertito alla stringa casuale tUGPP*yq24p+EgpQ
che ho appena generato, perché non possono contenere tutti i miliardi di possibili stringhe casuali nel loro database.
Quindi, come ti proteggi da siti come questo? Usa un algoritmo di hashing lento e un salt.