El formato de cripta modular para bcrypt consta de
$2$
,$2a$
o$2y$
identificando el algoritmo hash y formato- un valor de dos dígitos que indica el parámetro de costo, seguido de
$
- un valor codificado en base 64 de 53 caracteres de longitud (utilizan el alfabeto
.
,/
,0
–9
,A
–Z
,a
–z
que es diferente a la Codificación estándar Base 64 alfabeto) que consta de:- 22 caracteres de sal (efectivamente solo 128 bits de los 132 bits decodificados)
- 31 caracteres de salida encriptada (efectivamente solo 184 bits de los 186 bits decodificados)
Por lo tanto, la longitud total es de 59 o 60 bytes respectivamente.
Como usa el formato 2a, necesitará 60 bytes. Y por lo tanto, para MySQL recomendaré usar el CHAR(60) BINARY
o BINARY(60)
(ver El _bin y binario Colaciones
para obtener información sobre la diferencia).
CHAR
no es binario seguro y la igualdad no depende únicamente del valor del byte sino de la intercalación real; en el peor de los casos A
se trata como igual a a
. Ver El _bin
y binary
Colaciones
para más información.