Kdysi v prehistorii se hesla ukládala v plaintextu, což si dnes vůči svým zákazníkům dovolí už jen dementi velikosti Sony, později se začaly používat jednoduché kódy a potom šifry, které ale pro případného útočníka nebyl velký problém zlomit a dostat se k původním heslům. Proto se kvůli bezpečnosti zavedly jednosměrné matematické funkce, z jejichž výsledku není možné zpětně vypočítat původní zadanou hodnotu.
MD5 tedy není kódování ani šifrování, ale hashování. Představ si například (velmi zjednodušeně), že vezmeš zadané heslo, vynásobíš ASCII kódy všech jeho písmen mezi sebou, a potom do databáze uložíš zbytek po dělení toho součinu třeba číslem 12345. Opačný proces není možný, z toho co máš uložené se prostě nijak původní heslo nedá obnovit.
Jediná možnost jak zjistit původní heslo je použití hrubé síly, to znamená že budeš generovat všechny možné posloupnosti znaků a jejich hashe porovnávat s tím uloženým, dokud nenarazíš na tu správnou kombinaci. Ale připrav se na to, že na tvém počítači to bude trvat pár desítek tisíc let, pokud si nepořídíš nějakou specializovanou mašinu, jako je třeba
Copacobana, která to zvládne za několik týdnů. Podobnou službu poskytne i dostatečně veliký botnet.
Ale má to háček, pokud byla použita
sůl, tak dobu lámání hesla ještě asi milionkrát prodloužíš.