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
.
,/
,0
–9
,A
–Z
,a
–z
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.