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
–z
que é 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.