Cách sử dụng
- Dán một mã băm. Bỏ các nhãn như 0x, sha256= hoặc sha384-, nhưng giữ nguyên toàn bộ mã băm mật khẩu, kể cả ký tự $, { hoặc * ở đầu.
- Đọc kết quả: dạng được phát hiện và kích thước tính bằng bit, tiếp theo là các thuật toán khả dĩ, trong đó những thuật toán có khả năng cao nhất được đánh dấu. Hệ số chi phí của bcrypt, hoặc số vòng của sha256crypt, sha512crypt và PBKDF2, được hiển thị khi chuỗi có chứa thông tin này.
- Với các ứng viên MD5, SHA-1, SHA-256, SHA-512, CRC-32 và CRC-32C, nút Mở công cụ đưa bạn đến công cụ tính tương ứng.
- Nếu bạn biết hoặc đoán được văn bản gốc, hãy nhập nó vào ô Đối chiếu với văn bản để xem thuật toán nào tạo lại đúng mã băm đó.
Cách nhận dạng một mã băm
Mỗi thuật toán băm có kích thước đầu ra cố định, và hex dùng hai ký tự cho mỗi byte, nên độ dài của chuỗi hex là manh mối mạnh nhất. Công cụ cũng kiểm tra bộ ký tự và tìm các tiền tố mà định dạng băm mật khẩu đặt ở đầu chuỗi.
| Số ký tự hex | Bit | Thuật toán thường gặp |
|---|---|---|
| 8 | 32 | CRC-32, CRC-32C và Adler-32 |
| 32 | 128 | MD5, NTLM và MD4 |
| 40 | 160 | SHA-1 và RIPEMD-160 |
| 56 | 224 | SHA-224 và SHA3-224 |
| 64 | 256 | SHA-256, SHA3-256, BLAKE2s và Keccak-256 |
| 96 | 384 | SHA-384 và SHA3-384 |
| 128 | 512 | SHA-512, SHA3-512, BLAKE2b và Whirlpool |
Chỉ dựa vào độ dài thì chưa thể kết luận, vì một hàm băm tốt cho ra dữ liệu trông như ngẫu nhiên và không mang dấu hiệu nào về thuật toán của nó. Một giá trị 32 ký tự có thể là MD5, MD4 hoặc NTLM, thuật toán mà Windows dùng cho mật khẩu tài khoản (MD4 của mật khẩu ở dạng UTF-16LE). Vì thế, công cụ xếp hạng các ứng viên theo mức độ phổ biến: MD5 đứng đầu, hoặc NTLM đứng đầu khi mã băm được viết toàn chữ hoa, như cách một số công cụ trích xuất mật khẩu Windows in ra. Tương tự, Keccak-256 của Ethereum và SHA3-256 đã được chuẩn hóa chỉ khác nhau ở phần đệm, nhưng cả hai đều cho 64 ký tự hex.
Giá trị băm Base64 và định dạng băm mật khẩu
Một số hệ thống ghi giá trị băm bằng Base64 thay vì hex: 24 ký tự cho 16 byte (MD5, như trong header Content-MD5), 28 ký tự cho SHA-1, 44 cho SHA-256, 64 cho SHA-384 (như trong thuộc tính Subresource Integrity) và 88 cho SHA-512. Công cụ quy đổi độ dài ngược lại thành số byte và liệt kê các ứng viên tương tự. Chuỗi thiếu phần đệm hoặc dùng ký tự an toàn cho URL đều được chấp nhận, nhưng hãy bỏ tiền tố như sha384- trước.
Định dạng băm mật khẩu tự mô tả chính nó: tiền tố cho biết thuật toán, còn salt và các thiết lập chi phí được ghi ngay trong chuỗi. Các định dạng hiện đại đều có salt và cố ý chạy chậm; các định dạng LDAP và MySQL ở hai hàng cuối là những cấu trúc SHA-1 nhanh, và chỉ {SSHA} có thêm salt.
| Bắt đầu bằng | Định dạng | Thường gặp ở |
|---|---|---|
$2a$, $2b$, $2y$ | bcrypt, luôn dài 60 ký tự; hai chữ số tiếp theo là hệ số chi phí, mỗi bậc tăng gấp đôi khối lượng tính toán | Các web framework, password_hash() của PHP |
$argon2id$ | Argon2id với các thiết lập bộ nhớ (m), thời gian (t) và mức song song (p) | Ứng dụng hiện đại; được OWASP khuyến nghị |
$6$, $5$ | sha512crypt, sha256crypt, có thể kèm rounds= | /etc/shadow trên Linux |
$y$ | yescrypt | /etc/shadow trên nhiều bản phân phối Linux hiện nay |
$1$, $apr1$ | md5crypt, Apache MD5 | Hệ thống Unix cũ, .htpasswd |
pbkdf2_sha256$ | PBKDF2-SHA256 kèm số vòng lặp | Django |
{SHA}, {SSHA} | SHA-1, SHA-1 có salt | Thư mục LDAP |
* và 40 chữ số hex | PASSWORD() của MySQL 4.1+ | Bảng người dùng của MySQL |
Nhận dạng không phải là bẻ khóa
Hàm băm là hàm một chiều. Công cụ nhận dạng chỉ xem xét hình dạng của chuỗi: nó không thể tiết lộ, giải mã hay tra cứu dữ liệu đầu vào, và không gửi gì đến máy chủ hay cơ sở dữ liệu trực tuyến nào. Cách duy nhất để tìm ra đầu vào là đoán các ứng viên và băm từng cái một, đó là việc mà các công cụ khôi phục mật khẩu như hashcat và John the Ripper làm khi đã biết thuật toán. Các định dạng có salt và chạy chậm như bcrypt và Argon2 ra đời để khiến việc dò đoán đó trở nên tốn kém. Chỉ kiểm tra những mã băm mà bạn được phép xử lý.
Đối chiếu với văn bản kiểm tra một phỏng đoán cụ thể. Công cụ băm văn bản bạn nhập, ở dạng UTF-8, bằng MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 và CRC-32C, rồi cho biết kết quả nào trùng với mã băm, dù mã băm được viết bằng hex chữ hoa hay chữ thường, hoặc bằng Base64. Tính năng này không xác nhận được mã băm mật khẩu có salt hay HMAC, vì chúng còn phụ thuộc vào salt hoặc khóa bí mật; với giá trị có khóa, hãy dùng công cụ tạo HMAC cùng với khóa đó.
Câu hỏi thường gặp
Công cụ này có cho tôi biết văn bản hay mật khẩu gốc không?
Không. Công cụ chỉ cho biết thuật toán có khả năng đã được dùng. Hàm băm không thể đảo ngược; các trang "giải mã" mã băm trực tuyến thực chất tra giá trị đó trong các bảng mã băm của những từ thông dụng và mật khẩu bị rò rỉ, cách này chỉ hiệu quả với đầu vào yếu và không có salt.
Vì sao một mã băm lại có nhiều thuật toán được liệt kê?
Các thuật toán có cùng kích thước đầu ra tạo ra chuỗi có cùng độ dài và bộ ký tự, và bên trong mã băm không có gì ghi lại thuật toán nào đã được dùng. Ứng viên có khả năng cao nhất được đánh dấu và xếp đầu tiên, dựa trên mức độ phổ biến của từng thuật toán. Để chắc chắn, hãy tính lại mã băm từ một đầu vào đã biết.
Chuỗi hex 32 ký tự có phải lúc nào cũng là MD5 không?
Thường là vậy, nhưng không phải lúc nào cũng thế. NTLM, MD4, MD2 và RIPEMD-128 cho cùng độ dài, và mọi giá trị 128 bit viết bằng hex cũng vậy, chẳng hạn UUID bỏ dấu gạch ngang hoặc một token ngẫu nhiên. Ngữ cảnh sẽ quyết định: mã băm mật khẩu Windows nghĩa là NTLM, tổng kiểm tra của tệp nghĩa là MD5.
Vì sao Đối chiếu với văn bản không tìm thấy kết quả khớp?
echo tự thêm một ký tự như vậy, trừ khi bạn dùng echo -n hoặc printf), khác biệt về khoảng trắng hoặc chữ hoa chữ thường, văn bản được băm ở bảng mã khác UTF-8, có salt hoặc khóa như trong mã băm mật khẩu và HMAC, hoặc thuật toán nằm ngoài phạm vi kiểm tra, chẳng hạn SHA-3, BLAKE2 hay NTLM.Dán mã băm mật khẩu vào đây có an toàn không?
Việc phân tích diễn ra hoàn toàn trong trình duyệt của bạn và mã băm không bị truyền đi hay lưu lại. Dù vậy, mã băm mật khẩu lấy từ một hệ thống thật cho phép bất kỳ ai có nó thử đoán ngoại tuyến, vì vậy hãy coi những mã băm như vậy là dữ liệu nhạy cảm và đừng đưa chúng vào ticket, tin nhắn trò chuyện hay ảnh chụp màn hình.