Zdravím,
MD5 není šifra, ale hash (otisk). Tj. kontrola hesla pomocí MD5 se nedělá
tak, že by se z MD5 získalo původní heslo (to nejde, existuje nekonečně
mnoho vstupů se stejným MD5 hashem – nanejvýš můžete zkoušet různá hesla a
testovat, zda výsledný hash není shodný s tím, který máte). Kontrola hesla
funguje tak, že se z hesla zadaného uživatelem znovu spočítá MD5 hash a ten
se porovná s tím uloženým – a pokud jsou shodné, uživatel zadal správné
heslo. No a pokud aplikace počítá MD5 hash špatně, ale vždycky stejně,
spočítá ze stejného hesla i stejný pokažený MD5 otisk a porovnání otisků
pak funguje správně. Neboli ten program nemusí nikam nuly doplňovat, stačí,
když při dalším výpočtu "MD5" otisku ze stejného vstupu vynechá na výstupu
ty samé znaky.

Někdy se pro "rozlousknutí" MD5 hashů hesel používají duhové tabulky – je
to seznam už předpočítaných hashů pro nějaká nejčastější hesla.
Systematické vynechání některých znaků při převodu MD5 otisku z binární do
textové podoby teoreticky může být (hloupá) ochrana proti duhovým tabulkám.

S pozdravem

Filip Jirsák


Dne 8. února 2013 9:33 Mr.Krysa <mr.kr...@atlas.cz> napsal(a):

> Přemýšlím, proč to nevadí tomu programu a s takto zničené hashe zvládne
> správně zjistit kód. Když jsem použil MD5 decrypt, tak mě pokaždé odmítl s
> tím, že délka není délkou MD5 hash. Zkoušel jsem i nějaké software, ale
> jakmile zjistí 31 znaků, tak odmítají pracovat. Tak přemýšlím jak to dělá
> software, že si správně doplní nulu na správné místo a správně zpřístupní
> kód.

Odpovedet emailem