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.