Det modulære kryptformat for bcrypt består af
$2$
,$2a$
eller$2y$
identificere hashing-algoritmen og -formatet- en tocifret værdi, der angiver omkostningsparameteren, efterfulgt af
$
- en 53 tegn lang base-64-kodet værdi (de bruger alfabetet
.
,/
,0
–9
,A
–Z
,a
–z
der er anderledes end standard Base 64-kodning alfabet) bestående af:- 22 tegn salt (effektivt kun 128 bit af de 132 afkodede bit)
- 31 tegn krypteret output (effektivt kun 184 bit af de 186 afkodede bit)
Den samlede længde er således henholdsvis 59 eller 60 bytes.
Når du bruger 2a-formatet, skal du bruge 60 bytes. Og derfor til MySQL vil jeg anbefale at bruge BINÆR(60)
CHAR
er ikke binært sikkert, og lighed afhænger ikke udelukkende af byteværdien, men af den faktiske sammenstilling; i værste fald A
behandles som lig med a
. Se _bin
og binær
Samlinger
for mere information.