Chuyển đổi miễn phí

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í.

Về công cụ này

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.

Tại sao lại băm mật khẩu bằng bcrypt

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.

Cách sử dụng

Nhập mật khẩu, chọn chi phí, lấy hàm băm.

  1. Nhập mật khẩu: Nhập mật khẩu để băm. Công cụ này chạy hoàn toàn trong trình duyệt của bạn; mật khẩu không được truyền đi bất cứ đâu.
  2. Chọn hệ số chi phí: Mặc định là 10, tạo ra thời gian băm khoảng 100 ms trên phần cứng hiện đại. 12 được khuyến nghị cho các ứng dụng mới (250 ms). Giá trị cao hơn sẽ tăng tính bảo mật nhưng phải trả giá bằng việc xác minh chậm hơn.
  3. Phát ra: Trình băm tạo ra một muối 16 byte ngẫu nhiên, chạy dẫn xuất khóa bcrypt và tạo ra hàm băm ở định dạng $2b$ tiêu chuẩn.
  4. Sử dụng hàm băm: Lưu trữ kết quả đầu ra hoàn chỉnh ($2b$cost$saltAndHash) trong cơ sở dữ liệu mật khẩu của bạn. Việc xác minh sử dụng cùng một thư viện để so sánh một ứng cử viên với hàm băm được lưu trữ.

Các trường hợp sử dụng phổ biến

Chi tiết kỹ thuật

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.

Thực tiễn tốt nhất

Câu hỏi thường gặp

Tôi có thể tùy chỉnh đầu ra được tạo không?
Đúng. Công cụ này cung cấp nhiều tùy chọn tùy chỉnh khác nhau để điều chỉnh đầu ra theo nhu cầu cụ thể của bạn. Điều chỉnh cài đặt trước khi tạo hoặc tạo lại với các tùy chọn khác nhau.
Nội dung được tạo có được sử dụng miễn phí không?
Đúng. Mọi thứ bạn tạo bằng công cụ này đều là của bạn để sử dụng cho mục đích cá nhân, giáo dục hoặc thương mại mà không có bất kỳ hạn chế hoặc yêu cầu ghi nhận tác giả nào.
Điều này có yêu cầu một tài khoản?
Không. Công cụ này sẵn sàng để sử dụng ngay lập tức mà không cần đăng ký, không cần email và không cần đăng ký. Chỉ cần mở trang và bắt đầu tạo.
Dữ liệu đầu vào của tôi có được giữ kín không?
Đúng. Tất cả quá trình xử lý diễn ra trong trình duyệt của bạn. Dữ liệu đầu vào và đầu ra được tạo của bạn không bao giờ được gửi đến bất kỳ máy chủ bên ngoài nào.
Tôi có nên thêm muối của riêng tôi?
Không. bcrypt tự động tạo và lưu trữ một loại muối ngẫu nhiên. Việc thêm muối của riêng bạn là không cần thiết và có thể gây ra những lỗi nhỏ. Sử dụng thế hệ muối mặc định của thư viện.
Mật khẩu có được gửi đến máy chủ không?
Không. Việc băm bcrypt xảy ra trong trình duyệt của bạn. Mật khẩu không bao giờ rời khỏi thiết bị của bạn.
Tại sao lại có các biến thể $2a$, $2b$, $2y$?
$2a$ là bản gốc. $2b$ sửa một lỗi toàn diện được phát hiện vào năm 2014. $2y$ dành riêng cho PHP, có chức năng tương đương với $2b$. Các hệ thống mới sẽ tạo ra giá trị băm trị giá 2 tỷ USD.
Tôi có thể hạ cấp hàm băm chi phí cao xuống chi phí thấp hơn không?
Không. Hàm băm bao gồm chi phí như một phần của đầu ra và việc xác minh yêu cầu chi phí tương tự. Để thay đổi chi phí, hãy băm lại vào lần đăng nhập thành công tiếp theo.