Aktualizace:Pouhé použití hashovací funkce není dostatečně silné pro ukládání hesel. Měli byste si přečíst odpověď od Gillese v tomto vláknu pro podrobnější vysvětlení.
Pro hesla použijte hashovací algoritmus pro posílení klíče, jako je Bcrypt nebo Argon2i. Například v PHP použijte funkci password_hash() , který ve výchozím nastavení používá Bcrypt.
$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
Výsledkem je 60znakový řetězec podobný následujícímu (číslice se však budou lišit, protože generuje jedinečnou sůl).
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Použijte datový typ SQL CHAR(60)
k uložení tohoto kódování Bcrypt hashe. Všimněte si, že tato funkce se nekóduje jako řetězec hexadecimálních číslic, takže ji nemůžeme tak snadno uvolnit a uložit do binárního kódu.
Další hashovací funkce stále mají využití, ale ne pro ukládání hesel, takže níže ponechám původní odpověď, napsanou v roce 2008.
Záleží na použitém hashovacím algoritmu. Hašování vždy vytváří výsledek stejné délky, bez ohledu na vstup. Je typické reprezentovat binární výsledek hash v textu jako řadu hexadecimálních číslic. Nebo můžete použít UNHEX()
funkce pro zmenšení řetězce hexadecimálních číslic na polovinu.
- MD5 generuje 128bitovou hodnotu hash. Můžete použít CHAR(32) nebo BINARY(16)
- SHA-1 generuje 160bitovou hodnotu hash. Můžete použít CHAR(40) nebo BINARY(20)
- SHA-224 generuje 224bitovou hodnotu hash. Můžete použít CHAR(56) nebo BINARY(28)
- SHA-256 generuje 256bitovou hodnotu hash. Můžete použít CHAR(64) nebo BINARY(32)
- SHA-384 generuje 384bitovou hodnotu hash. Můžete použít CHAR(96) nebo BINARY(48)
- SHA-512 generuje 512bitovou hodnotu hash. Můžete použít CHAR(128) nebo BINARY(64)
- BCrypt generuje 448bitovou hash hodnotu závislou na implementaci. Vy může potřebovat CHAR(56), CHAR(60), CHAR(76), BINARY(56) nebo BINARY(60)
Od roku 2015 NIST doporučuje používat SHA-256 nebo vyšší pro jakékoli aplikace hashovacích funkcí vyžadujících interoperabilitu. NIST však nedoporučuje používat tyto jednoduché hashovací funkce pro bezpečné ukládání hesel.
Menší hashovací algoritmy mají svá použití (jako interní v aplikaci, ne pro výměnu), ale jsou známý jako crackable .