Mật khẩu Bcrypt Máy phát điện
Tạo băm mật khẩu bcrypt an toàn ngay lập tức trong trình duyệt của bạn. Chọn hệ số chi phí và mật khẩu băm phía máy khách — hoàn toàn riêng tư và miễn phí.
Tạo băm mật khẩu bcrypt an toàn ngay lập tức trong trình duyệt của bạn. Chọn hệ số chi phí và mật khẩu băm phía máy khách — hoàn toàn riêng tư và miễn phí.
bcrypt là một hàm băm mật khẩu được thiết kế bởi Niels Provos và David Mazières vào năm 1999, bắt nguồn từ mật mã Blowfish. Không giống như các hàm băm có mục đích chung như SHA-256, bcrypt cố tình làm chậm — và chậm về mặt cấu hình, thông qua một tham số chi phí — đây chính xác là đặc tính mà một trình băm mật khẩu cần có. Hàm băm nhanh hơn cho phép kẻ tấn công ép buộc nhiều ứng viên hơn mỗi giây; một cái chậm hơn sẽ hạn chế chúng.
bcrypt cũng tự động kết hợp muối trên mỗi mật khẩu, loại bỏ toàn bộ lớp tấn công dựa trên các bảng cầu vồng được tính toán trước. Tham số muối và chi phí được lưu trữ như một phần của đầu ra bcrypt, do đó việc xác minh chỉ cần hàm băm được lưu trữ và mật khẩu ứng viên - không cần quản lý muối riêng biệt. Sự kết hợp giữa sự chậm chạp, rắc rối và định dạng khép kín này đã khiến bcrypt trở thành hàm băm mật khẩu mặc định trong hai thập kỷ và là một lựa chọn mạnh mẽ hiện nay.
Các lựa chọn thay thế hiện đại tồn tại. Argon2 đã giành chiến thắng trong Cuộc thi băm mật khẩu năm 2015 và cung cấp độ cứng bộ nhớ bên cạnh độ cứng thời gian. scrypt cung cấp các thuộc tính tương tự. Đối với các thiết kế mới, Argon2id là lựa chọn được khuyên dùng. bcrypt vẫn được chấp nhận và triển khai rộng rãi, đặc biệt trong các môi trường không có Argon2.
Lưu trữ mật khẩu dưới dạng văn bản gốc là hành vi sai trái. Việc lưu trữ chúng bằng hàm băm nhanh như SHA-256 hầu như không tốt hơn — GPU hiện đại tính toán hàng tỷ hàm băm SHA-256 mỗi giây, khiến các cuộc tấn công bạo lực chống lại bất kỳ mật khẩu phổ biến nào đều có thể thực hiện được trong vài giờ. Sự chậm chạp có chủ ý của bcrypt làm thay đổi tính kinh tế: với hệ số chi phí 12, kẻ tấn công dành khoảng 250 mili giây cho mỗi mật khẩu ứng viên, khiến cho bất kỳ mật khẩu không tầm thường nào không thể sử dụng biện pháp vũ phu.
Muối tự động cho mỗi mật khẩu của bcrypt cũng đánh bại các cuộc tấn công bảng cầu vồng. Hai người dùng có cùng mật khẩu sẽ tạo ra các hàm băm bcrypt khác nhau vì muối của họ khác nhau. Việc xâm phạm cơ sở dữ liệu mật khẩu không cho phép kẻ tấn công nhanh chóng xác định các mật khẩu phổ biến hoặc các lần truy cập bảng được tính toán trước.
Nhập mật khẩu, chọn chi phí, lấy hàm băm.
bcrypt sử dụng giai đoạn thiết lập khóa của mật mã Blowfish đã được sửa đổi, lặp lại 2^lần chi phí. Hệ số chi phí là logarit — chi phí 12 chậm gấp đôi chi phí 11, chậm gấp bốn lần chi phí 10. Việc chia tỷ lệ logarit này cho phép quản trị viên tăng chi phí theo thời gian khi phần cứng được cải thiện mà không cần thiết kế lại hệ thống.
Định dạng đầu ra là $version$cost$saltAndHash trong đó saltAndHash được mã hóa base64 bằng bảng chữ cái tùy chỉnh. Phiên bản thường là $2b$ (biến thể hiện đại đã sửa lỗi xung quanh) hoặc $2y$ (dành riêng cho PHP, tương đương). Muối là 16 byte; hàm băm là 24 byte; chúng cùng nhau mã hóa thành 53 ký tự của custom-base64.
Độ dài đầu vào tối đa là 72 byte (Giới hạn độ dài khóa Blowfish). Mật khẩu dài hơn sẽ bị cắt bớt một cách âm thầm, đây là một vấn đề bcrypt lâu đời. Cách tốt nhất là giới hạn độ dài mật khẩu ở mức 72 byte hoặc băm trước bằng SHA-256 để chuẩn hóa độ dài trước bcrypt.