Thử nghiệm bcrypt
Băm mật khẩu bằng bcrypt với cost 4–16, dùng salt 22 ký tự của riêng bạn, xem hash được tách thành phiên bản, cost, salt, hash và xác minh hash.
Đã dùng 0/72 byte
2^cost = 1.024 vòng
Để trống để dùng salt ngẫu nhiên.
bcrypt (Provos & Mazières, 1999) là hàm băm thích ứng: mỗi khi tăng cost thêm 1, khối lượng tính toán tăng gấp đôi. Hãy chọn cost cao nhất mà vẫn giữ thời gian đăng nhập trên máy chủ dưới khoảng 250 ms (từ 10 trở lên). Đầu ra dùng tiền tố $2b$; hash $2a$ và $2y$ được xác minh theo cùng cách.
Xác minh mật khẩu với chuỗi hash
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Thử nghiệm bcrypt là gì?
Thử nghiệm với bcrypt: chọn hệ số cost, nhập một salt cụ thể hoặc dùng salt ngẫu nhiên, và xem hash kết quả được tách thành phiên bản, cost, salt và hash, kèm thời gian xử lý. Bộ xác minh kiểm tra mật khẩu với hash $2a$, $2b$ và $2y$.
Cách sử dụng Thử nghiệm bcrypt
- Nhập Mật khẩu; gợi ý cho biết đã dùng bao nhiêu trong 72 byte của bcrypt.
- Đặt Hệ số cost (4–16) và tùy chọn Salt (22 ký tự, không bắt buộc).
- Nhấn Băm để xem chuỗi hash đã mã hóa, các phần của nó và thời gian xử lý.
- Dán bất kỳ hash bcrypt nào vào khung xác minh để kiểm tra mật khẩu.
Ví dụ
Mật khẩu password, cost 4, salt abcdefghijklmnopqrstuu
$2b$04$abcdefghijklmnopqrstuughE8Ev8uGFaUgY2cNEySvxngrb/Jzdm
Khớp với kết quả của pyca/bcrypt cho cùng mật khẩu và salt.
Khi nào nên dùng Thử nghiệm bcrypt
Dùng để tái tạo hash bcrypt với salt đã biết, chọn hệ số cost bằng cách đo thời gian, hoặc xác minh hash lấy từ cơ sở dữ liệu khi gỡ lỗi. Với thiết kế mới, hãy ưu tiên Argon2id.
Thử nghiệm bcrypt hoạt động như thế nào
bcrypt (Provos & Mazières, 1999) chạy bước thiết lập khóa EksBlowfish tốn kém 2^cost lần, rồi mã hóa 'OrpheanBeholderScryDoubt' 64 lần. Salt 16 byte và kết quả 23 byte được viết bằng bảng chữ Base64 riêng của bcrypt (./A–Za–z0–9). Việc tính toán dùng hash-wasm (WebAssembly). Mật khẩu dài hơn 72 byte UTF-8 bị từ chối vì bcrypt bỏ qua mọi thứ sau byte thứ 72.
Các Trường Hợp Sử Dụng Phổ Biến
- Đo thời gian xử lý của từng hệ số cost
- Tái tạo test vector với salt cố định
- Kiểm tra hash $2y$ của PHP có xác minh được không
- Giảng dạy cấu trúc của hash bcrypt
Câu Hỏi Thường Gặp
Tôi nên dùng hệ số cost bao nhiêu?
Ít nhất 10 (OWASP); hãy chọn giá trị cao nhất mà vẫn giữ thời gian băm dưới khoảng 250 ms trên máy chủ của bạn. Mỗi lần +1 làm thời gian tăng gấp đôi.
$2a$, $2b$ và $2y$ khác nhau thế nào?
Chúng đánh dấu các bản sửa lỗi của những cài đặt cũ. Với mật khẩu tối đa 72 byte, chúng cho ra cùng một hash, và cả ba đều xác minh được ở đây.
Vì sao mật khẩu dài của tôi bị từ chối?
bcrypt chỉ dùng 72 byte đầu tiên. Âm thầm cắt bớt sẽ khiến các mật khẩu khác nhau trùng hash, nên công cụ từ chối thay vì làm vậy.