Định dạng mã mô-đun cho bcrypt bao gồm
-
$ 2 $
,$ 2a $
hoặc$ 2y $
xác định định dạng và thuật toán băm - một giá trị hai chữ số biểu thị thông số chi phí, theo sau là
$
- giá trị được mã hóa cơ sở 64 dài 53 ký tự (chúng sử dụng bảng chữ cái
.
,/
,0
-9
,A
-Z
,a
-z
khác với Mã hóa cơ sở 64 tiêu chuẩn bảng chữ cái) bao gồm:- 22 ký tự của muối (hiệu quả chỉ là 128 bit trong số 132 bit được giải mã)
- 31 ký tự của đầu ra được mã hóa (chỉ 184 bit trong số 186 bit được giải mã)
Do đó, tổng độ dài tương ứng là 59 hoặc 60 byte.
Khi sử dụng định dạng 2a, bạn sẽ cần 60 byte. Và do đó đối với MySQL, tôi khuyên bạn nên sử dụng mã <> CHAR (60) BINARY hoặc BINARY (60)
(xem _bin và nhị phân Ảnh ghép
để biết thông tin về sự khác biệt).
CHAR
không phải là nhị phân an toàn và sự bình đẳng không chỉ phụ thuộc vào giá trị byte mà là đối chiếu thực tế; trong trường hợp xấu nhất A
được coi như bằng a
. Xem _bin
và binary
Ảnh ghép
để biết thêm thông tin.