Bcrypt-hashgenerator & -verifier
Genereer en verifieer bcrypt-wachtwoordhashes online — instelbare kostenfactor, $2b$/$2a$/$2y$-prefixes. 100% in je browser; je wachtwoord wordt nooit geüpload.
Wat is bcrypt?
Bcrypt is een wachtwoordhashfunctie die specifiek is ontworpen om wachtwoorden veilig op te slaan. In plaats van een wachtwoord in platte tekst te bewaren, slaat een server een eenrichtings bcrypt-hash op; wanneer een gebruiker zich aanmeldt, hasht de server het ingediende wachtwoord op dezelfde manier en controleert of de twee hashes overeenkomen. Bcrypt is gebouwd op de Blowfish-cipher en werd in 1999 ontworpen door Niels Provos en David Mazières, met één bewuste eigenschap die het onderscheidt van algemene hashes zoals SHA-256: het is met opzet traag, en je kunt het na verloop van tijd nog trager maken met een instelbare kostenfactor naarmate hardware sneller wordt.
Een bcrypt-hash is één zichzelf beschrijvende string van 60 tekens — bijvoorbeeld $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq. Hij bundelt vier delen: de versie ($2b$), de kostenfactor (12, een logaritmische work factor), een 22 tekens lange Base64-salt en de 31 tekens lange Base64-digest. Omdat de salt willekeurig is en in de hash is ingebed, levert hetzelfde wachtwoord elke keer een andere hash op — wat rainbow tables verslaat en verbergt dat twee gebruikers hetzelfde wachtwoord hebben gekozen. Verificatie leest de salt en kostenfactor weer uit de opgeslagen hash en hasht de kandidaat opnieuw, zodat bcrypt nooit een hash hoeft (en kan) terug te draaien om het wachtwoord te herstellen.
Deze tool draait volledig in je browser met een meegeleverde bcrypt-implementatie — er wordt nooit een wachtwoord of hash geüpload. Gebruik hem om een hash te genereren met een gekozen kostenfactor en prefix, om een wachtwoord te verifiëren tegen een bestaande hash, en om de opbouw van een hash te lezen. Hij past natuurlijk bij andere beveiligingstools: beveilig een map met HTTP Basic Auth via onze htpasswd-generator (die rechtstreeks bcrypt-entries kan uitgeven), maak een sterk wachtwoord om te hashen met onze generator voor willekeurige wachtwoorden, en grijp naar onze SHA-256-generator wanneer je een snelle algemene checksum nodig hebt in plaats van een trage wachtwoordhash. Als je beslist met welk algoritme je wachtwoorden opslaat, vergelijk dan de opties in bcrypt vs Argon2 vs scrypt.
// Node.js — bcryptjs / bcrypt (emits $2b$)
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash('correct horse battery staple', 12);
// -> $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
const ok = await bcrypt.compare('correct horse battery staple', hash); // true
# Python — bcrypt
import bcrypt
hashed = bcrypt.hashpw(b'correct horse battery staple', bcrypt.gensalt(12))
bcrypt.checkpw(b'correct horse battery staple', hashed) # True
# PHP — password_hash (emits $2y$)
$hash = password_hash('correct horse battery staple', PASSWORD_BCRYPT, ['cost' => 12]);
password_verify('correct horse battery staple', $hash); // true
# Apache htpasswd CLI — bcrypt entry to stdout (-B bcrypt, -b inline, -n stdout)
htpasswd -Bbn admin 'correct horse battery staple'
# -> admin:$2y$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq Belangrijkste functies
Bcrypt-hashes genereren
Maak een standaard bcrypt-hash van 60 tekens uit elk wachtwoord met een nieuwe willekeurige salt. Elke klik levert een andere geldige hash op, precies zoals een echte wachtwoordopslag zou doen.
Instelbare kostenfactor
Stem de work factor af van 4 tot 15 (12 is de moderne standaard). Voel hoe elke stap de rekentijd ongeveer verdubbelt, zodat je een kostenfactor kunt kiezen die sterk maar toch snel genoeg is voor aanmelden.
Kies de versieprefix
Geef $2b$ (de huidige bcryptjs-standaard), $2y$ (PHP / Apache htpasswd) of $2a$ (de oorspronkelijke) uit. Ze zijn allemaal uitwisselbaar voor verificatie over bibliotheken heen.
Een wachtwoord tegen een hash verifiëren
Plak een opgeslagen hash en een kandidaatwachtwoord om meteen te bevestigen of ze overeenkomen — opnieuw hashen met de ingebedde salt en kostenfactor, nooit ontsleutelen. Ideaal om een mislukte aanmelding te debuggen.
Opbouw van de hash ontleed
Zie elke bcrypt-hash opgesplitst in versie, kostenfactor, salt en digest, zodat de structuur van de $2b$12$...-string in één oogopslag duidelijk is.
100% aan de clientzijde
Al het hashen en verifiëren gebeurt lokaal in je browser. Er wordt nooit een wachtwoord of hash naar een server gestuurd, zodat je privé met echte inloggegevens kunt werken.
Voorbeelden van de Bcrypt-generator
bcrypt-hash (kostenfactor 12, $2b$)
wachtwoord: correct horse battery staple kostenfactor: 12 prefix: $2b$
$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
Een bcrypt-hash met kostenfactor 12 en de $2b$-prefix. De salt is willekeurig, dus hetzelfde wachtwoord levert elke keer een andere hash op — toch verifiëren ze allemaal tegen het oorspronkelijke wachtwoord.
Een wachtwoord verifiëren tegen een hash
wachtwoord: correct horse battery staple hash: $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
✓ Komt overeen — het wachtwoord is juist voor deze hash
Verifiëren ontsleutelt de hash niet. bcrypt hasht het opgegeven wachtwoord opnieuw met de salt en kostenfactor die in de opgeslagen hash zitten en vergelijkt vervolgens het resultaat. Een overeenkomst betekent dat het wachtwoord juist is.
Opbouw van een hash ontleed
$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
versie: $2b$ · kostenfactor: 12 · salt: dUSFKqT1FCMYZ6hcQfsxuO · digest: NizEqcX8IGK8snfVSowP5Uu.TDJoPUq
Elke bcrypt-hash beschrijft zichzelf: een versielabel, een tweecijferige kostenfactor, een 22 tekens lange Base64-salt en een 31 tekens lange Base64-digest, allemaal in één string van 60 tekens. De tool splitst deze uit, zodat je ze in één oogopslag kunt lezen.
De Bcrypt-generator gebruiken
- 1
Voer een wachtwoord in & kies de kostenfactor
Typ op het tabblad Genereren een wachtwoord of klik op Willekeurig wachtwoord. Kies een kostenfactor (4–15; 12 is de moderne standaard) en een versieprefix — $2b$, $2a$ of $2y$ — die past bij je stack.
- 2
Genereer de hash
De bcrypt-hash wordt lokaal berekend met een nieuwe willekeurige salt en verschijnt als één string van 60 tekens $2b$12$... Klik op Kopiëren om hem op te halen, of genereer opnieuw voor een nieuwe gesalte hash.
- 3
Lees de opbouw of verifieer
Het opbouwpaneel splitst de hash in versie, kostenfactor, salt en digest. Schakel naar het tabblad Verifiëren om een opgeslagen hash en een wachtwoord te plakken en meteen te bevestigen of ze overeenkomen.
Common Errors
Proberen een hash te ontsleutelen
Bcrypt is eenrichting; er is geen ontsleuteling. Om een wachtwoord te controleren, verifieer je het tegen de hash in plaats van de digest terug te draaien.
bcrypt.decrypt(hash) // no such operation
bcrypt.compare(password, hash) // returns true / false
De kostenfactor te laag instellen
Een lage kostenfactor zoals 4 of 6 hasht vrijwel onmiddellijk, waardoor aanvallers gelekte hashes ook snel kunnen brute-forcen. Gebruik 12 als basislijn.
cost: 4 // far too fast, weak against brute force
cost: 12 // modern default, resists brute force
Twee keer dezelfde hash verwachten
Omdat de salt willekeurig is, levert hetzelfde wachtwoord opnieuw hashen een andere string op. Vergelijk met verifiëren, nooit door twee hashes op byte-gelijkheid te controleren.
hash(pw) === storedHash // fails — different salts
bcrypt.compare(pw, storedHash) // correct check
Veelvoorkomende toepassingen
- Een wachtwoordhash in een database vullen
- Genereer een bcrypt-hash voor een beheerders- of testaccount en voeg hem rechtstreeks in je gebruikerstabel in, zodat je je kunt aanmelden zonder eerst een volledige registratieflow op te zetten.
- Een mislukte aanmelding debuggen
- Verifieer een bekend goed wachtwoord tegen de opgeslagen hash om te bevestigen of de hash zelf klopt, en isoleer zo de bug van je authenticatiecode.
- De juiste kostenfactor kiezen
- Genereer op meerdere kostenniveaus op je eigen hardware om te voelen hoe lang elk duurt, en kies dan een work factor die brute force weerstaat zonder echte aanmeldingen te vertragen.
- htpasswd- / Basic Auth-entries maken
- Maak een $2y$ bcrypt-hash voor een Apache-, Docker Registry- of Caddy-inloggegeven en plaats die in een gebruiker:hash-regel voor HTTP Basic Auth.
- Testfixtures bouwen
- Maak per-wachtwoord-deterministische bcrypt-hashes om integratietests van een aanmeld- of wachtwoordherstelflow te vullen zonder een echte auth-server op te zetten.
- Een gevonden hash auditen
- Lees de opbouw van een bcrypt-string in een configuratie of dump om de kostenfactor te controleren, en verifieer hem tegen het wachtwoord dat je verwacht om een overeenkomst te bevestigen.
Technische details
- Blowfish-gebaseerd, adaptieve kostenfactor
- Bcrypt leidt zijn hash af van de dure sleutelopzet van de Blowfish-cipher, herhaald 2^kostenfactor keer. De kostenfactor met één verhogen verdubbelt het werk en houdt de functie traag tegen brute force naarmate hardware verbetert.
- Willekeurige salt van 128 bits
- Elke hash bevat een willekeurige salt van 16 bytes (128 bits), Base64-gecodeerd als 22 tekens na de kostenfactor. De salt maakt elke hash uniek, zodat identieke wachtwoorden nooit een digest delen en rainbow tables niet van toepassing zijn.
- Zelfbeschrijvend formaat van 60 tekens
- De uitvoer is $versie$kostenfactor$salt+digest — een vaste string van 60 tekens die alles bevat wat nodig is om hem te verifiëren. Er is geen aparte salt-kolom of parameteropslag vereist.
- Wachtwoordlimiet van 72 bytes
- Bcrypt hasht alleen de eerste 72 bytes van een wachtwoord; alles daarbuiten wordt stilzwijgend genegeerd. Voor zeer lange wachtwoordzinnen is voorafgaand hashen (bijvoorbeeld met SHA-256) vóór bcrypt een veelgebruikte mitigatie.
- Verifiëren, niet ontsleutelen
- Bcrypt is eenrichting. Verificatie draait de hash opnieuw op het kandidaatwachtwoord met de salt en kostenfactor die uit de opgeslagen hash zijn geparseerd, en vergelijkt vervolgens de digests in constante tijd. Er is geen bewerking die de platte tekst herstelt.
- Eerlijkheidsnotities & kanttekeningen
- Hashes worden lokaal berekend en nooit tegen een live systeem gecontroleerd. Gekopieerde hashes en elk wachtwoord dat je typte leven op je klembord en in het browsergeheugen — behandel ze als geheimen en wis je klembord nadat je in productie hebt geplakt.
Best practices
- Gebruik kostenfactor 12 of hoger
- Kostenfactor 12 is de moderne basislijn; verhoog hem richting 14 voor gevoelige systemen zolang de aanmeldlatentie acceptabel blijft. Evalueer periodiek opnieuw — wat vijf jaar geleden traag genoeg was, is vandaag goedkoop aan te vallen.
- Sla of log nooit platte tekst op
- Sla alleen de bcrypt-hash op, nooit het oorspronkelijke wachtwoord, en houd wachtwoorden uit logs en foutmeldingen. De hele waarde van bcrypt gaat verloren als de platte tekst er samen mee lekt.
- Laat bcrypt de salt afhandelen
- Bcrypt genereert en bedt een veilige willekeurige salt voor je in. Geef geen eigen statische salt op en hergebruik er geen — een willekeurige salt per hash is wat rainbow tables verslaat.
- Let op de limiet van 72 bytes
- Als je lange wachtwoordzinnen accepteert, onthoud dan dat bcrypt bytes voorbij 72 negeert. Overweeg voorafgaand hashen met SHA-256, of beoordeel Argon2id, wanneer zeer lange invoer volledig moet worden gedekt.
Veelgestelde vragen over de Bcrypt-generator
Is een online bcrypt-generator veilig om te gebruiken?
Hoe genereer ik online een bcrypt-hash?
$2b$ voor de meeste moderne stacks, $2y$ voor PHP en Apache, of $2a$ voor de oorspronkelijke identifier. De bcrypt-hash wordt meteen in je browser berekend met een nieuwe willekeurige salt en verschijnt als één string van 60 tekens $2b$12$... die je met één klik kunt kopiëren. Er wordt niets geüpload: het wachtwoord en de hash verlaten nooit je apparaat. Genereer op elk moment opnieuw om nog een geldige hash voor hetzelfde wachtwoord te krijgen, aangezien elke hash een andere willekeurige salt bevat. Kan een bcrypt-hash worden ontsleuteld of teruggedraaid?
Welke kostenfactor (work factor) moet ik gebruiken?
Wat is het verschil tussen $2a$, $2b$ en $2y$?
$2a$ is de oorspronkelijke, breed gebruikte identifier; $2b$ is de gecorrigeerde huidige versie die de bcryptjs-bibliotheek en de meeste moderne implementaties uitgeven; en $2y$ is de identifier die PHP en Apache's htpasswd gebruiken. Voor verificatie zijn ze uitwisselbaar — een hash die je hier met welke prefix dan ook genereert, valideert correct over bibliotheken heen, omdat ze allemaal dezelfde kernfunctie draaien. Kies de prefix die je stack verwacht als je byte-voor-byte-compatibiliteit nodig hebt. Hoe verifieer ik een wachtwoord tegen een bcrypt-hash?
$2b$12$...-string) en het kandidaatwachtwoord, en de tool vertelt je meteen of ze overeenkomen. Het werkt door de salt en kostenfactor die in de hash zitten te extraheren, het kandidaatwachtwoord opnieuw te hashen met precies die parameters en de nieuwe digest met de opgeslagen digest te vergelijken — er komt geen ontsleuteling aan te pas. Zo controleert een aanmeldsysteem een wachtwoord: het herstelt nooit de platte tekst, het bevestigt alleen dat het opnieuw hashen van het ingediende wachtwoord de opgeslagen hash reproduceert. bcrypt vs Argon2 vs scrypt — welke moet ik gebruiken?
Waarom is de bcrypt-hash elke keer anders?
Gerelateerde tools
Alle tools bekijken →JWT decoderen — online JWT-decoder
Beveiligingstools
Decodeer JWT-tokens direct in je browser. Inspecteer header, payload, signature, vervaldatum en claims. 100% privé — je token verlaat je apparaat nooit.
JWT-encoder & generator
Beveiligingstools
Gratis online JWT-generator & encoder. Bouw de header en payload en onderteken direct met HS256, RS256 of ES256. 100% in de browser — je secret en sleutel verlaten je apparaat nooit.
Online MD5 Hash Generator & Checksum Tool
Beveiligingstools
Genereer MD5-, SHA-256-, SHA-1- en SHA-512-hashes gratis in je browser. Hash tekst of bestanden, verifieer checksums en kopieer resultaten. Geen account nodig.
Willekeurig wachtwoord genereren — online generator
Beveiligingstools
Genereer direct sterke willekeurige wachtwoorden — gratis, 100% in je browser. Stel lengte en tekens in, batch tot 50 met entropie-analyse.
SHA-1 Hash Generator (160-bit, verouderd)
Beveiligingstools
Genereer SHA-1 hashes in je browser — 40-tekens hex output, geen upload. Verouderd algoritme voor Git-vingerafdrukken, oude certificaatcontroles en migratieaudits. Je data verlaat je apparaat niet.
SHA-256 Hash-generator & Checksumtool
Beveiligingstools
Genereer SHA-256 hashes online gratis. Hash tekst of bestanden in je browser, verifieer checksums en kopieer 64-tekens hex output. Geen account nodig; je data verlaat de pagina niet.