Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jakiego typu/długości kolumny należy użyć do przechowywania zaszyfrowanego hasła Bcrypt w bazie danych?

Modułowy format crypt dla bcrypt składa się z

  • $2$ , $2a$ lub $2y$ identyfikacja algorytm i format haszowania
  • dwucyfrowa wartość oznaczająca parametr kosztu, po której następuje $
  • wartość o długości 53 znaków zakodowana w podstawie 64 (używają alfabetu . , / , 09 , AZ , az różni się to od standardowego kodowania Base 64 alfabet) składający się z:
    • 22 znaki soli (w praktyce tylko 128 bitów ze 132 zdekodowanych bitów)
    • 31 znaków zaszyfrowanego wyjścia (efektywnie tylko 184 bity ze 186 zdekodowanych bitów)

Zatem całkowita długość wynosi odpowiednio 59 lub 60 bajtów.

Używając formatu 2a, potrzebujesz 60 bajtów. I dlatego dla MySQL polecam używać CHAR(60) BINARY lub BINARY(60) (patrz _bin i binarne Zestawienia aby uzyskać informacje o różnicy).

CHAR nie jest binarnie bezpieczny, a równość nie zależy wyłącznie od wartości bajtu, ale od rzeczywistego sortowania; w najgorszym przypadku A jest traktowane jako równe a . Zobacz _bin i binary Zestawienia aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hybrydowe obciążenia baz danych OLTP/Analytics:replikacja danych MySQL do ClickHouse

  2. Długości VARCHAR MySQL i UTF-8

  3. Automatyzacja wdrażania bazy danych MySQL

  4. Jak mogę użyć executemany, aby wstawić do MySQL listę słowników w Pythonie?

  5. Jaka jest różnica między BIT i TINYINT w MySQL?