Đị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-zkhá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.