Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Que tipo/comprimento de coluna devo usar para armazenar uma senha com hash Bcrypt em um banco de dados?


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 . , / , 09 , AZ , az 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.