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

Hvilken kolonnetype/længde skal jeg bruge til at gemme en Bcrypt hashed adgangskode i en database?

Det modulære kryptformat for bcrypt består af

  • $2$ , $2a$ eller $2y$ identificere hashing-algoritmen og -formatet
  • en tocifret værdi, der angiver omkostningsparameteren, efterfulgt af $
  • en 53 tegn lang base-64-kodet værdi (de bruger alfabetet . , / , 09 , AZ , az der er anderledes end standard Base 64-kodning alfabet) bestående af:
    • 22 tegn salt (effektivt kun 128 bit af de 132 afkodede bit)
    • 31 tegn krypteret output (effektivt kun 184 bit af de 186 afkodede bit)

Den samlede længde er således henholdsvis 59 eller 60 bytes.

Når du bruger 2a-formatet, skal du bruge 60 bytes. Og derfor til MySQL vil jeg anbefale at bruge CHAR(60) BINÆR eller BINÆR(60) (se _bin og binær Samlinger for information om forskellen).

CHAR er ikke binært sikkert, og lighed afhænger ikke udelukkende af byteværdien, men af ​​den faktiske sammenstilling; i værste fald A behandles som lig med a . Se _bin og binær Samlinger for mere information.



  1. Sådan tilføjes en kolonne i SQL

  2. Postgres:vakuumkommando renser ikke døde tupler

  3. PostgreSQL 9-installation på Windows:Kan ikke skrive inde i TEMP-miljøstien.

  4. hvordan man konverterer en strengdato til datoformat i oracle10g