sql >> Database >  >> RDS >> Mysql

Welk kolomtype/-lengte moet ik gebruiken voor het opslaan van een gehasht Bcrypt-wachtwoord in een database?

Het modulaire crypt-formaat voor bcrypt bestaat uit

  • $2$ , $2a$ of $2y$ het identificeren van het hash-algoritme en formaat
  • een tweecijferige waarde die de kostenparameter aangeeft, gevolgd door $
  • een 53 tekens lange, met base-64 gecodeerde waarde (ze gebruiken het alfabet . , / , 09 , AZ , eenz dat is anders dan de standaard Base 64-codering alfabet) bestaande uit:
    • 22 karakters salt (in feite slechts 128 bits van de 132 gedecodeerde bits)
    • 31 tekens gecodeerde uitvoer (in feite slechts 184 bits van de 186 gedecodeerde bits)

De totale lengte is dus respectievelijk 59 of 60 bytes.

Omdat je het 2a-formaat gebruikt, heb je 60 bytes nodig. En dus voor MySQL raad ik aan om de CHAR(60) BINAIR of BINAIR(60) (zie De _bin en binair Verzamelingen voor informatie over het verschil).

CHAR is niet binair veilig en gelijkheid hangt niet alleen af ​​van de bytewaarde, maar van de feitelijke sortering; in het ergste geval A wordt behandeld als gelijk aan a . Zie De _bin en binair Verzamelingen voor meer informatie.



  1. Een MySQL-database repareren in cPanel

  2. Hoe batch ophalen met Fluent NHibernate implementeren bij het werken met Oracle?

  3. MySQL DROP-DATABASE

  4. MySQL – MariaDB – De allereerste opgeslagen procedure schrijven