sql >> Databáze >  >> RDS >> Mysql

Jaký typ/délku sloupce bych měl použít pro uložení hesla hash Bcrypt v databázi?

Modulární formát crypt pro bcrypt se skládá z

  • $2$ , $2a$ nebo $2y$ identifikace hašovacího algoritmu a formátu
  • dvoumístná hodnota označující parametr cost, za kterou následuje $
  • hodnota 53 znaků dlouhá base-64 (používají abecedu . , / , 09 , AZ , az které se liší od standardního kódování Base 64 abeceda) sestávající z:
    • 22 znaků soli (ve skutečnosti pouze 128 bitů ze 132 dekódovaných bitů)
    • 31 znaků šifrovaného výstupu (ve skutečnosti pouze 184 bitů ze 186 dekódovaných bitů)

Celková délka je tedy 59 nebo 60 bajtů.

Při použití formátu 2a budete potřebovat 60 bajtů. A proto pro MySQL doporučuji použít CHAR(60) BINARY nebo BINARY(60) (viz _bin a binární Porovnání pro informaci o rozdílu).

CHAR není binárně bezpečný a rovnost nezávisí pouze na hodnotě bytu, ale na skutečném řazení; v nejhorším případě A je považováno za rovné a . Viz _bin a binary Porovnání pro více informací.



  1. Jak vložit pole do jednoho MySQL připraveného příkazu s PHP a PDO

  2. Získání výstupu z dbms_output.get_lines pomocí JDBC

  3. Podtržítko nefunguje v klauzuli typu Oracle

  4. Problém s dotazem na vložení ve Sqlite ? (proměnná vložení)