§

Bcrypt-generator

§

Bcrypt-hash genereren

10 (1,024 rounds)

Bcrypt is sinds zijn debuut in 1999 door Provos en Mazières de favoriete wachtwoord-hashmethode in webontwikkeling. NIST SP 800-63B beveelt geheugen-intensief hashen aan voor wachtwoordopslag, en OWASP vermeldt bcrypt als een voorkeursoptie naast Argon2id. Rails levert bcrypt via has_secure_password, Django ondersteunt het als verwisselbare backend, en Node.js-ontwikkelaars gebruiken bcryptjs. De kostenfactor bepaalt hoe lang één hash duurt — verdubbeling van de kosten verdubbelt het werk. De meeste applicaties hanteren kostenfactor 10 (1.024 rondes) als basis, terwijl financiële of beheersystemen vaak naar 12 (4.096 rondes) gaan. Deze tool draait volledig in de browser met JavaScript, zodat je wachtwoorden je machine nooit verlaten.

Wat is bcrypt?

Bcrypt is een wachtwoord-hashfunctie ontworpen door Niels Provos en David Mazières, gebaseerd op het Blowfish-cijfer. In tegenstelling tot snelle digests zoals MD5 of SHA-256 is bcrypt bewust traag en rekenintensief — dit maakt brute-force-aanvallen op gestolen wachtwoord-hashes onpraktisch. Bcrypt genereert automatisch een willekeurig salt per wachtwoord, dus identieke wachtwoorden produceren verschillende hashes.

Hoe werkt bcrypt?

Het bcrypt-algoritme draait volledig in je browser. Hier is wat er stap voor stap gebeurt:

  1. Je wachtwoord wordt gecodeerd als UTF-8-bytes en ingevoerd in het bcrypt-sleutelschema, dat de 4.184-byte P-array en S-boxen van het Blowfish-cijfer initialiseert met het wachtwoord en salt.
  2. Een willekeurig 128-bit salt wordt gegenereerd. Het salt wordt in het sleutelschema gemengd zodat elk uniek salt een compleet andere hash produceert, zelfs voor hetzelfde wachtwoord.
  3. Het sleutelschema wordt uitgevoerd voor 2^kosten rondes (bijv. 2^10 = 1.024 iteraties bij kostenfactor 10). Elke iteratie versleutelt het salt en de P-array-items opnieuw, waardoor de berekening langzamer wordt naarmate de kosten stijgen.
  4. De uiteindelijke uitvoer is een string van 60 tekens in het formaat $2b$<cost>$<salt><hash>, waarbij cost is opgevuld met nullen (bijv. 10), salt 22 Base64-tekens is, en hash 31 Base64-tekens is.
  5. Voor verificatie wordt hetzelfde algoritme opnieuw uitgevoerd met het kandidaat-wachtwoord en het salt uit de opgeslagen hash. Als de afgeleide hash overeenkomt met de opgeslagen hash, is het wachtwoord correct.

Welke kostenfactor moet ik gebruiken?

De kostenfactor is de logaritme van het aantal iteraties — kostenfactor 10 betekent 2^10 = 1.024 rondes, kostenfactor 12 betekent 4.096 rondes. Kies op basis van je beveiligingsbehoeften en hardware:

  • Kosten 4-6 (16-64 rondes) — alleen voor ontwikkeling en testen. Te snel voor productie; biedt minimale bescherming.
  • Kosten 8 (256 rondes) — absoluut minimum voor niet-kritieke toepassingen. Ongeveer 6 ms op moderne hardware.
  • Kosten 10 (1.024 rondes) — huidige aanbevolen basislijn. Duurt ongeveer 25 ms. Goed voor de meeste webapplicaties.
  • Kosten 12 (4.096 rondes) — aanbevolen voor beheerportalen, financiële systemen en toepassingen met hoge beveiliging. Duurt ongeveer 100 ms.
  • Kosten 14 (16.384 rondes) — hoge beveiliging. Duurt ongeveer 400 ms. Gebruik dit voor hoofdwachtwoorden, encryptiesleutels, of wanneer login-latentie acceptabel is.

Waarom deze bcrypt-generator gebruiken?

  • Je privacy wordt beschermd — elk wachtwoord wordt lokaal in je browser gehasht en er verlaten geen gegevens je apparaat.
  • Je hebt beide modi naast elkaar: nieuwe hashes genereren of bestaande verifiëren zonder van pagina te wisselen.
  • De kostenfactor is instelbaar van 4 (snel) tot 15 (erg traag), zodat je deze kunt aanpassen aan de beveiligingsbehoeften van je applicatie.
  • De hashes gebruiken het standaardformaat $2b$ dat werkt met elke gangbare taal en framework.

Wat zijn veelvoorkomende toepassingen van bcrypt?

Bcrypt wordt in de industrie veel gebruikt voor wachtwoordopslag en -verificatie:

  • Webapplicatie-authenticatie — gebruikerswachtwoord-hashes opslaan in databases zodat wachtwoorden in platte tekst nooit worden bewaard.
  • API-sleutel-hashing — API-geheimen hashen voordat ze worden opgeslagen, zodat een databaselek geen geldige inloggegevens onthult.
  • Migratie-audit — controleren of verouderde wachtwoord-hashes van een ouder systeem gebruikers nog steeds kunnen authenticeren na het upgraden van de authenticatielaag.

Hoe ziet een bcrypt-hash eruit?

Het hashen van het wachtwoord hunter2 met kostenfactor 10 produceert een string zoals $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Het formaat is als volgt opgebouwd: $2b$ (algoritmeversie), 10 (kostenfactor), $, dan 22 tekens salt en 31 tekens hash, allemaal Base64-gecodeerd. Elke uitvoering met hetzelfde wachtwoord produceert een andere hash vanwege het willekeurige salt.

Deze bcrypt-generator draait volledig in je browser met een pure JavaScript-implementatie. Hash wachtwoorden voordat je ze opslaat, verifieer bestaande hashes en stem de kostenfactor af op je beveiligingseisen — allemaal zonder één byte naar een server te sturen.