Co je bcrypt?
Bcrypt je hašovací funkce pro hesla navržená Nielsem Provosem a Davidem Mazièrem, založená na šifře Blowfish. Na rozdíl od rychlých digestů jako MD5 nebo SHA-256 je bcrypt záměrně pomalý a výpočetně náročný — to činí útoky hrubou silou proti ukradeným hashům hesel nepraktickými. Bcrypt automaticky generuje náhodnou sůl pro každé heslo, takže identická hesla vytvářejí různé hashe.
Jak bcrypt funguje?
Algoritmus bcrypt běží zcela ve vašem prohlížeči. Zde je co se děje krok za krokem:
- Vaše heslo je zakódováno jako UTF-8 bajty a vloženo do bcrypt key schedule, která inicializuje 4 184bajtové P-pole a S-box šifry Blowfish pomocí hesla a soli.
- Je vygenerována náhodná 128bitová sůl. Sůl je smíchána do key schedule tak, že každá jedinečná sůl vytváří zcela odlišný hash i pro stejné heslo.
- Key schedule je spuštěna pro 2^cost kol (např. 2^10 = 1 024 iterací při nákladu 10). Každá iterace znovu šifruje sůl a položky P-pole, což zpomaluje výpočet s rostoucím nákladem.
- Konečný výstup je 60znakový řetězec ve formátu
$2b$<cost>$<salt><hash>, kde cost je nulami doplněný (např. 10), salt je 22 Base64 znaků a hash je 31 Base64 znaků. - Pro ověření se stejný algoritmus spustí znovu s kandidátním heslem a solí z uloženého hashe. Pokud odvozený hash odpovídá uloženému, heslo je správné.
Který nákladový faktor mám použít?
Nákladový faktor je logaritmus počtu iterací — náklad 10 znamená 2^10 = 1 024 kol, náklad 12 znamená 4 096 kol. Vyberte podle svých bezpečnostních potřeb a hardwaru:
- Náklad 4-6 (16-64 kol) — pouze pro vývoj a testování. Příliš rychlé pro produkční použití; poskytuje minimální ochranu.
- Náklad 8 (256 kol) — naprosté minimum pro nekritické aplikace. Kolem 6 ms na moderním hardwaru.
- Náklad 10 (1 024 kol) — aktuální doporučený základ. Trvá asi 25 ms. Dobré pro většinu webových aplikací.
- Náklad 12 (4 096 kol) — doporučeno pro administrátorské portály, finanční systémy a vysoce bezpečnostní aplikace. Trvá asi 100 ms.
- Náklad 14 (16 384 kol) — vysoká bezpečnost. Trvá asi 400 ms. Použijte pro hlavní hesla, šifrovací klíče nebo kdykoli je akceptovatelná latence přihlášení.
Proč použít tento bcrypt generátor?
- Vaše soukromí je chráněno — každé heslo je hašováno lokálně ve vašem prohlížeči a žádná data nikdy neopustí vaše zařízení.
- Získáte oba režimy vedle sebe: generovat nové hashe nebo ověřovat existující bez přepínání stránek.
- Nákladový faktor je nastavitelný od 4 (rychlý) do 15 (velmi pomalý), takže můžete přizpůsobit bezpečnostní potřeby vaší aplikace.
- Hashe používají standardní formát
$2b$, který funguje s každým hlavním jazykem a frameworkem.
Jaké jsou běžné aplikace bcrypt?
Bcrypt je široce používán pro ukládání a ověřování hesel napříč průmyslem:
- Autentizace webových aplikací — ukládání hashů hesel uživatelů v databázích, takže hesla v prostém textu nejsou nikdy uložena.
- Hašování API klíčů — hašování API tajemství před jejich uložením, takže únik databáze neprozradí platné přihlašovací údaje.
- Audit migrace — kontrola, zda starší hashe hesel z původního systému stále autentizují uživatele po upgradu autentizační vrstvy.
Jak vypadá bcrypt hash?
Hašování hesla hunter2 s nákladovým faktorem 10 vytváří řetězec jako $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Formát se rozkládá jako: $2b$ (verze algoritmu), 10 (nákladový faktor), $, pak 22 znaků soli a 31 znaků hashe, vše Base64 kódované. Každé spuštění se stejným heslem vytváří jiný hash kvůli náhodné soli.
Tento bcrypt generátor běží zcela ve vašem prohlížeči pomocí implementace v čistém JavaScriptu. Hašujte hesla před jejich uložením, ověřujte existující hashe a nastavte nákladový faktor podle vašich bezpečnostních požadavků — vše bez odeslání jediného bajtu na server.