O formato de cripta modular para bcrypt consiste em
$2$,$2a$ou$2y$identificando o algoritmo e formato de hash- um valor de dois dígitos indicando o parâmetro de custo, seguido por
$ - um valor codificado em base 64 de 53 caracteres (eles usam o alfabeto
.,/,0–9,A–Z,a–zque é diferente da codificação base 64 padrão alfabeto) consistindo em:- 22 caracteres de salt (efetivamente apenas 128 bits dos 132 bits decodificados)
- 31 caracteres de saída criptografada (na verdade, apenas 184 bits dos 186 bits decodificados)
Assim, o comprimento total é de 59 ou 60 bytes, respectivamente.
Ao usar o formato 2a, você precisará de 60 bytes. E, portanto, para o MySQL, recomendo usar o
CHAR(60) BINARY ou BINARY(60)
(consulte O _bin e binário Agrupamentos
para obter informações sobre a diferença). CHAR não é binário seguro e a igualdade não depende apenas do valor do byte, mas do agrupamento real; no pior caso A é tratado como igual a a . Consulte O _bin e binary Agrupamentos
Para maiores informações.