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–zque 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.