Công cụ này làm gì
Gõ hoặc dán văn bản, hoặc chọn tệp, và mọi giá trị băm được tính cùng lúc: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, Keccak-256 (kiểu đệm Keccak gốc mà Ethereum dùng) và CRC-32. Bật HMAC để tính băm có khóa, với khóa dạng văn bản hoặc hex. Kết quả hiển thị dạng thập lục phân (chữ thường hay hoa), Base64 hoặc Base64url, và ô so sánh cho biết thuật toán nào tạo ra giá trị băm bạn dán vào. Văn bản và tệp không rời khỏi trình duyệt; tệp được đọc từng phần nên tệp lớn vẫn dùng được.
Văn bản được băm dưới dạng byte UTF-8
Hàm băm tính trên byte chứ không phải ký tự. Công cụ mã hóa văn bản thành UTF-8 đúng như đã gõ, giống lệnh printf '%s' 'text' | sha256sum. Hai lý do hay khiến giá trị băm "không khớp":
- Dấu xuống dòng ở cuối.
echo 'text' | sha256sum băm cả văn bản lẫn ký tự xuống dòng. Hãy dùng printf '%s' hoặc echo -n. - Mã hóa khác. "é" là hai byte trong UTF-8 (C3 A9) nhưng một byte trong Latin-1 (E9). Số byte dưới ô nhập cho biết thứ đang được băm.
Ví dụ: chuỗi The quick brown fox jumps over the lazy dog (43 byte) có MD5 9e107d9d372bb6826bd81d3542a419d6 và CRC-32 414fa339; với HMAC và khóa key, HMAC-SHA256 là f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8.
Thuật toán nào cho việc gì
- SHA-256 là lựa chọn mặc định hợp lý cho checksum và chữ ký. SHA-3 là thiết kế khác SHA-2 (FIPS 202); Keccak-256 khác SHA3-256 ở phần đệm và xuất hiện trong Ethereum.
- MD5 và SHA-1 đã bị phá về va chạm: vẫn ổn để phát hiện hỏng dữ liệu vô tình, nhưng đừng dùng khi có người cố tình tạo dữ liệu.
- CRC-32 là checksum, không phải hàm băm mật mã.
- HMAC chứng minh tin nhắn đến từ người biết khóa, như chữ ký webhook.
- Mật khẩu: không dùng hàm nào ở trên; hãy dùng Argon2id, scrypt hoặc bcrypt.
Bài viết nên dùng hàm băm nào: MD5, SHA-256 hay HMAC giải thích chi tiết. Để kiểm tra tệp tải về, dùng công cụ kiểm tra mã băm tệp.