Mysql
 sql >> Database >  >> RDS >> Mysql

Quale tipo/lunghezza di colonna devo utilizzare per archiviare una password con hash Bcrypt in un database?

Il formato crypt modulare per bcrypt è composto da

  • $2$ , $2a$ o $2y$ identificare l'algoritmo e formato di hashing
  • un valore a due cifre che denota il parametro di costo, seguito da $
  • un valore codificato in base 64 di 53 caratteri (usano l'alfabeto . , / , 09 , AZ , az che è diverso dalla codifica Base 64 standard alfabeto) composto da:
    • 22 caratteri di sale (effettivamente solo 128 bit dei 132 bit decodificati)
    • 31 caratteri di output crittografato (effettivamente solo 184 bit dei 186 bit decodificati)

Quindi la lunghezza totale è rispettivamente di 59 o 60 byte.

Poiché utilizzi il formato 2a, avrai bisogno di 60 byte. E quindi per MySQL consiglierò di utilizzare il CHAR(60) BINARY o BINARY(60) (vedi Il _bin e binario Fascicolazioni per informazioni sulla differenza).

CHAR non è binario sicuro e l'uguaglianza non dipende solo dal valore del byte ma dalle regole di confronto effettive; nel peggiore dei casi A è considerato uguale a a . Vedi Il _bin e binary Fascicolazioni per ulteriori informazioni.