sql >> Databasteknik >  >> RDS >> Mysql

Vilken kolumntyp/längd ska jag använda för att lagra ett hashat Bcrypt-lösenord i en databas?

Det modulära kryptformatet för bcrypt består av

  • $2$ , $2a$ eller $2y$ identifiera hashingalgoritmen och -formatet
  • ett tvåsiffrigt värde som anger kostnadsparametern, följt av $
  • ett 53 tecken långt base-64-kodat värde (de använder alfabetet . , / , 09 , AZ , az som skiljer sig från standard Base 64-kodning alfabetet) som består av:
    • 22 tecken salt (i praktiken endast 128 bitar av de 132 avkodade bitarna)
    • 31 tecken krypterad utdata (i praktiken endast 184 bitar av de 186 avkodade bitarna)

Den totala längden är alltså 59 respektive 60 byte.

När du använder 2a-formatet behöver du 60 byte. Och därför för MySQL rekommenderar jag att du använder CHAR(60) BINÄRT eller BINÄR(60) (se _bin och binär Samlingar för information om skillnaden).

CHAR är inte binärt säker och likhet beror inte enbart på bytevärdet utan på den faktiska sammanställningen; i värsta fall A behandlas som lika med a . Se _bin och binär Samlingar för mer information.



  1. DBA:s roll i NoSQL

  2. Hur man listar alla tabeller i Oracle

  3. hur man kontrollerar typ av värde i postgres

  4. Count(*) vs Count(1) - SQL Server