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–zróż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.