Generátor Bcrypt
Vytvořte hash hesla pomocí bcrypt s náhodnou 16bajtovou solí a faktorem náročnosti od 4 do 12. Nástroj vrátí standardní modulární řetězec hashe začínající na $2a$, který přijímají funkce PHP password_verify, Node.js bcrypt, Spring Security i většina frameworků. Použijte jej k vytvoření testovacích uživatelů, resetování hesla správce v databázi nebo kontrole vlastního kódu pro hashování. Heslo se nikdy nezobrazuje zpět ani neukládá.
Často kladené otázky
Co je bcrypt?
Bcrypt je funkce pro hashování hesel z 1999 založená na šifře Blowfish. Kombinuje náhodnou sůl s nastavitelnou náročností, takže každý další krok zdvojnásobí práci, kterou musí útočník vynaložit na jeden pokus. Pro ukládání hesel jde stále o široce podporovanou volbu.
Co znamená výstupní řetězec?
Hash, například $2a$10$ následovaný 53 znaky, obsahuje verzi 2a, náročnost 10, 22znakovou sůl a 31znakový hash, vše ve vlastní abecedě bcrypt Base64. Uložte celý řetězec, protože ověřovací funkce z něj načítá sůl a náročnost.
Jaký faktor náročnosti mám zvolit?
Nástroj umožňuje nastavit náročnost od 4 do 12 a ve výchozím nastavení používá 10, což je běžná výchozí hodnota frameworků. Každý krok zdvojnásobí dobu výpočtu, takže náročnost 12 trvá přibližně čtyřikrát déle než náročnost 10. V produkčním prostředí zvolte nejvyšší náročnost, kterou vaše servery zvládnou přibližně za 100 až 250 milisekund.
Proč je náročnost omezena na 12?
Vyšší náročnost znamená, že výpočet každého hashe trvá sekundy a jeden požadavek by mohl server na dlouhou dobu zaměstnat. Náročnost 12 je pro většinu aplikací už dostatečně vysoká. V případě potřeby můžete ve vlastním prostředí hash znovu vytvořit s vyšší náročností.
Proč se pro stejné heslo pokaždé vytvoří jiný hash?
Nástroj pro každý hash vygeneruje novou náhodnou 16bajtovou sůl. Různé soli vedou k různým řetězcům, ale každý z nich lze ověřit pomocí stejného hesla. Tím se útočníkům zabrání v používání předpočítaných tabulek.
Existuje limit délky hesla?
Ano. Bcrypt používá pouze prvních 72 bajtů hesla, proto nástroj delší hesla odmítne a nebude zbytek tiše ignorovat. Znaky, které nejsou ASCII, zabírají v UTF-8 několik bajtů.
Přijme PHP nebo Laravel hash $2a$?
Ano. Funkce PHP password_verify, Laravel, Symfony a pluginy WordPress používající password_hash přijímají hashe $2a$, $2b$ i $2y$, které se liší pouze opravami historických chyb. Node.js bcrypt, bcryptjs, Python bcrypt a Spring Security přijímají také $2a$.
Ukládá se nebo zaznamenává moje heslo?
Ne. Heslo se použije pouze k výpočtu hashe během požadavku. Z odpovědi se odstraní a nikdy se neukládá do protokolů ani úložiště.
Mám použít bcrypt, nebo Argon2?
OWASP nyní doporučuje Argon2id, protože je náročný na paměť, což prodražuje útoky pomocí GPU. Bcrypt je stále přijatelný a má velmi širokou podporu v knihovnách, takže je dobrou volbou, když Argon2 není k dispozici.
Jak ověřím heslo proti hashi bcrypt?
Použijte Bcrypt Verifier na tomto webu nebo zavolejte ověřovací funkci svého frameworku. Nikdy přímo neporovnávejte řetězce bcrypt, protože nový hash stejného hesla vždy vypadá jinak.