Công cụ băm mật khẩu

Băm mật khẩu bằng Argon2id, bcrypt, scrypt hoặc PBKDF2 với thiết lập theo khuyến nghị OWASP và salt ngẫu nhiên, đồng thời xác minh mật khẩu với chuỗi hash đã lưu.

Mỗi lần bấm sẽ tạo salt ngẫu nhiên 16 byte mới nên chuỗi hash mỗi lần một khác, nhưng đều xác minh được. Tham số theo OWASP Password Storage Cheat Sheet. Hãy lưu toàn bộ chuỗi đã mã hóa: nó chứa thuật toán, tham số, salt và hash.

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.

Băm mật khẩu là gì?

Công cụ này tạo hash mật khẩu sẵn sàng để lưu trữ chỉ với một cú nhấp, dùng thiết lập tối thiểu theo OWASP Password Storage Cheat Sheet và một salt ngẫu nhiên mới. Bộ xác minh tích hợp kiểm tra mật khẩu với bất kỳ chuỗi hash bcrypt, Argon2, scrypt hoặc PBKDF2 nào.

Cách sử dụng Băm mật khẩu

  1. Nhập mật khẩu vào ô Mật khẩu.
  2. Chọn Thuật toán; khuyên dùng Argon2id.
  3. Nhấn Băm và sao chép Chuỗi hash đã mã hóa.
  4. Để kiểm tra mật khẩu, dán chuỗi hash vào mục Xác minh mật khẩu với chuỗi hash, nhập mật khẩu và nhấn Xác minh.

Ví dụ

Đầu vào
Mật khẩu hunter2, Argon2id
Đầu ra
$argon2id$v=19$m=19456,t=2,p=1$ojaAuqtpNZXLTJQVRP8teg$52egAc/OkuGZUe+ByQP/IxYP4pL6RNdbCi6tx97q308

Salt là ngẫu nhiên, nên mỗi lần bạn sẽ nhận một chuỗi khác; chuỗi nào cũng xác minh được.

Khi nào nên dùng Băm mật khẩu

Dùng để tạo fixture kiểm thử, tạo sẵn tài khoản quản trị, xem một định dạng hash trông thế nào hoặc xác minh mật khẩu với hash khi gỡ lỗi. Trong môi trường production, hãy băm mật khẩu trên máy chủ bằng một thư viện được duy trì; đừng bao giờ băm ở client thay cho máy chủ.

Băm mật khẩu hoạt động như thế nào

Argon2id (m=19 MiB, t=2, p=1), bcrypt (cost 12) và scrypt (N=2^17, r=8, p=1) được tính bằng hash-wasm (WebAssembly); PBKDF2-HMAC-SHA-256 với 600.000 vòng lặp dùng Web Crypto API của trình duyệt. Mỗi lần chạy dùng một salt 16 byte mới từ crypto.getRandomValues. Định dạng đầu ra: bcrypt $2b$, chuỗi PHC của Argon2 $argon2id$v=19$m=…,t=…,p=…$salt$hash, $scrypt$ln=…,r=…,p=…$salt$hash và passlib $pbkdf2-sha256$iterations$salt$hash. Khi xác minh, chuỗi được phân tích và hash được tính lại với các tham số đã lưu (so sánh thời gian hằng định).

Các Trường Hợp Sử Dụng Phổ Biến

  • Tạo mật khẩu quản trị đã băm cho dữ liệu seed của cơ sở dữ liệu
  • Xác minh một hash bcrypt đã lưu có khớp với mật khẩu không
  • Tạo fixture kiểm thử cho mã xác thực
  • So sánh định dạng hash của các thuật toán khác nhau

Lưu Ý Bảo Mật

Mọi thứ chạy trong trình duyệt của bạn. Tránh dán hash mật khẩu production cùng với mật khẩu thật trên máy tính dùng chung.

Câu Hỏi Thường Gặp

Tôi nên dùng thuật toán nào?

Argon2id cho hệ thống mới. Dùng scrypt hoặc bcrypt nếu nền tảng không có Argon2, và PBKDF2 khi cần tuân thủ FIPS-140.

Vì sao mỗi lần hash lại khác nhau?

Mỗi lần băm dùng một salt ngẫu nhiên mới. Salt được lưu bên trong chuỗi đã mã hóa, nên việc xác minh vẫn hoạt động.

Có thể đảo ngược hash không?

Không. Kẻ tấn công chỉ có thể đoán mật khẩu và băm từng lần đoán, điều mà các thuật toán chậm này khiến trở nên tốn kém.

Những định dạng hash nào xác minh được?

bcrypt ($2a$, $2b$, $2y$), chuỗi PHC của Argon2, chuỗi $scrypt$, passlib $pbkdf2-sha1/sha256/sha512$ và hash pbkdf2_sha256$ của Django.

Khám phá thêm danh mục