Het modulaire crypt-formaat voor bcrypt bestaat uit
$2$
,$2a$
of$2y$
het identificeren van het hash-algoritme en formaat- een tweecijferige waarde die de kostenparameter aangeeft, gevolgd door
$
- een 53 tekens lange, met base-64 gecodeerde waarde (ze gebruiken het alfabet
.
,/
,0
–9
,A
–Z
,een
–z
dat is anders dan de standaard Base 64-codering alfabet) bestaande uit:- 22 karakters salt (in feite slechts 128 bits van de 132 gedecodeerde bits)
- 31 tekens gecodeerde uitvoer (in feite slechts 184 bits van de 186 gedecodeerde bits)
De totale lengte is dus respectievelijk 59 of 60 bytes.
Omdat je het 2a-formaat gebruikt, heb je 60 bytes nodig. En dus voor MySQL raad ik aan om de CHAR(60) BINAIR
of BINAIR(60)
(zie De _bin en binair Verzamelingen
voor informatie over het verschil).
CHAR
is niet binair veilig en gelijkheid hangt niet alleen af van de bytewaarde, maar van de feitelijke sortering; in het ergste geval A
wordt behandeld als gelijk aan a
. Zie De _bin
en binair
Verzamelingen
voor meer informatie.