Proč je bezpečnější?
Jestli je to delší - ale zase je to pravidelnější, může využít bigramy a různé pravděpodobnostní znaky. A i hash lze pro dnešní účely vyrobit dostatečně dlouhý (třeba SHA512 a kódování aspoň base64). Kdyby byl hash příliš krátký, z principu by kolize šly počítat snadno a i hashovací funkce jako taková by nebyla bezpečná.
Při útoku hrubou silou nebo slovníkem ale nemůže být zahashovaná verze bezpečnější nebo ne o moc (ledaže by s tím útočník nepočítal). vždy totiž mohu dělat útok srubou silou a zakončit to hashem. Jeden náhodný znak nakonec by heslo proti tomuto útoku zřejmě zabezpečil lépe než hash na konci.
Zatím zahashovaná a nezahashovaná hesla vycházejí zhruba nastejno, jen u zahashovaných hesel je menší pravděpodobnost, že by s tím útočník počítal.
Při útoku ze strany poskytovatele ale jasně vítězí v bezpečnosti zahashovaná hesla, pokud přidáváme doménu. Řekněme, že by root.cz chtěl moje heslo zneužít pro přihlášení ke Google. Z kyticka.root.cz by viděl, že asi má použít kyticka.google.com, kyticka.mail.google.com, kyticka.docs.google.com nebo něco takového. Možností zas až tolik není. Pokud ale uvidí c9238f28af458b8d3cb9cfbcc1f8b399, těžko si z toho odvodí 789893b9f74d3a0f9d1d4788c1b2b494, ec6b55754312ecf27bcbbfcc47d50e1b nebo 8af1185fe85f2be0c3f48afb2f78d942. Zde používám MD5, kdo chce, může použít třeba zmíněné SHA512. Pak z toho budou obludnosti jako
aee4b4193725be549dde892cd1935cd830094da84aa5c903cbbb5f072f191a3bc0e6508f2f19f04477438a2b54015deeb3a36601c6b1ce19f39a57734d0c8362, ale princip bude stále stejný.
Kdo by nazážel na maximální délku hesla, může zkusit třeba base64 nebo nějaký větší kalibr. Není problém vymyslet baseXXX, kde XXX je počet prvků množiny všech povolených znaků.