Tạo mã băm

Dán văn bản và nhận năm mã băm cùng lúc — không cần nhấn nút, không tải lên.

Cách sử dụng

  1. Nhập hoặc dán văn bản và cả năm mã băm hiện ngay — không cần nhấn nút.
  2. Sao chép từng mã bằng nút trên dòng của nó, hoặc tải cả năm dưới dạng tệp .txt. Khi sao chép, bạn nhận được chuỗi hex trần, không kèm nhãn.
  3. Bật Hex chữ hoa nếu hệ thống bạn đối chiếu in mã băm bằng chữ in hoa. Bật tắt không bao giờ xóa nội dung bạn đã nhập.
  4. Mọi thứ chạy trong trình duyệt: không tải lên, không lưu trữ, không ghi vào thanh địa chỉ.

Ví dụ

Văn bản

hello world

Mã băm

MD5:     5eb63bbbe01eeed093cb22bb8f5acdc3
SHA-1:   2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
SHA-512: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f

Mười một ký tự được băm thành mười một byte UTF-8. “你好,世界” là 5 ký tự nhưng 15 byte — số byte phía trên kết quả chính là số byte thực sự được băm.

Quy tắc, giới hạn và các vấn đề đã biết

  • MD5 và SHA-1 đã bị phá và không được dùng cho bất cứ việc gì liên quan đến bảo mật: có thể tạo va chạm theo yêu cầu. Chúng chỉ có ở đây cho kiểm tra toàn vẹn không đối kháng — ví dụ xác nhận văn bản bạn có khớp với giá trị công bố ở nơi khác.
  • Không dùng các mã băm này để lưu mật khẩu. Không có salt, không có dẫn xuất khóa và không có hệ số công việc. Lưu mật khẩu cần bcrypt, scrypt, Argon2 hoặc PBKDF2.
  • Chỉ văn bản. Tệp không được băm — hãy dùng sha256sum hoặc shasum trên máy của bạn khi cần checksum của một tệp tải về.
  • Đầu vào luôn được mã hóa thành byte UTF-8. Không có chế độ nhập UTF-16, Hex hay Base64, và không có cách băm byte thô.
  • Không có gì trong đầu vào bị thay đổi trước khi băm: không cắt khoảng trắng, không chuẩn hóa Unicode, không đổi chữ hoa/thường, không xóa ký tự vô hình. Nếu mã băm không khớp với hệ thống khác, gần như chắc chắn văn bản không giống nhau từng byte.
  • Chuẩn hóa Unicode rất quan trọng: “é” viết bằng một code point và “é” viết bằng “e” cộng dấu kết hợp là hai chuỗi byte khác nhau, nên cho hai mã băm khác nhau. Đó là hành vi đúng — chuẩn hóa ngầm sẽ che mất khác biệt.
  • Dấu cách cuối và dấu xuống dòng cuối là một phần của đầu vào. `echo "abc" | sha256sum` băm “abc\n”, nên khác với mã băm của “abc” ở đây; hãy tự thêm dấu xuống dòng khi đó là thứ bạn cần so sánh.
  • Mã băm phân biệt chữ hoa/thường và một chiều: “Hello” và “hello” khác nhau, và không thể chuyển mã băm trở lại văn bản gốc.
  • Không hỗ trợ: HMAC và các mã băm có khóa, SHA-224, SHA-3, RIPEMD, Whirlpool, BLAKE, CRC32, KDF có salt, băm tệp và “dán mã băm mong đợi rồi kiểm tra giúp tôi”. Với mã băm HMAC có khóa, hãy dùng công cụ JWT.
  • Tối đa 100.000 ký tự; vượt quá sẽ báo lỗi thay vì kết quả bị cắt. Không tải lên, không lưu trữ, không ghi vào URL và không chia sẻ: nút chia sẻ chỉ chia sẻ địa chỉ trang này.

Mã băm thường xuất hiện cùng những công cụ này.