Công Cụ Nhanh

Tạo mã băm MD5, SHA-256 online

Định dạng kết quả

Văn bản được băm dạng UTF-8 đúng như bạn nhập, kể cả dấu cách và xuống dòng ở cuối.

Nhập văn bản hoặc chọn tệp để xem mã băm.

Dán mã băm do nơi phát hành công bố (hex hoặc Base64, có thể có dấu cách, dấu hai chấm).

Xử lý ngay trên trình duyệt của bạn. Tệp và dữ liệu không được tải lên máy chủ.

Trả lời nhanh

Mã băm (hash) là “dấu vân tay” có độ dài cố định của dữ liệu: cùng dữ liệu luôn ra cùng mã, đổi một ký tự là mã khác hoàn toàn. MD5 của “abc” là 900150983cd24fb0d6963f7d28e17f72, SHA-256 của “abc” bắt đầu bằng ba7816bf. Dùng SHA-256 để kiểm tra tệp; MD5 và SHA-1 không còn an toàn cho mục đích bảo mật.

Mã băm (hash) là gì?

Công cụ tính cùng lúc MD5, SHA-1, SHA-256, SHA-384 và SHA-512 cho văn bản (UTF-8) hoặc tệp bất kỳ tới 500 MB, có HMAC với khoá bí mật cho chữ ký webhook, xuất hex thường, HEX hoa hoặc Base64, và ô đối chiếu: dán checksum do nơi phát hành công bố để biết ngay tệp tải về có nguyên vẹn không. SHA dùng WebCrypto của trình duyệt, MD5 được viết riêng và kiểm thử bằng các vector chuẩn trong RFC 1321; tệp được băm trong Web Worker, không tải lên đâu cả.

Minh hoạ một tờ tài liệu rơi vào máy xay tay, đầu ra là một hàng ô màu ngắn có độ dài cố định, bên cạnh có ổ khoá

Cách tạo và kiểm tra mã băm

  1. 1

    Chọn tab “Văn bản” rồi gõ hoặc dán nội dung, hoặc tab “Tệp” rồi chọn / kéo thả tệp; năm mã băm hiện ngay.

  2. 2

    Chọn định dạng kết quả: hex thường (phổ biến nhất), HEX hoa hoặc Base64 (dùng trong header HTTP, Subresource Integrity).

  3. 3

    Cần chữ ký HMAC (webhook, API): bật “Dùng HMAC” và nhập khoá bí mật; kết quả đổi thành HMAC-MD5, HMAC-SHA-256…

  4. 4

    Để kiểm tra tệp tải về, dán checksum được công bố vào “Đối chiếu mã băm”: dòng khớp được tô xanh và báo thuật toán khớp.

So sánh các thuật toán băm

Thuật toánĐộ dài (hex)Còn an toàn?Nên dùng cho
MD532 ký tự (128 bit)Không: tạo được hai tệp trùng mã từ năm 2004Phát hiện tệp hỏng do lỗi tải, khoá bộ nhớ đệm
SHA-140 ký tự (160 bit)Không: đã có cặp tệp trùng mã công khai năm 2017 (SHAttered)Tương thích hệ thống cũ, Git đời đầu
SHA-25664 ký tự (256 bit)CóChecksum tệp, chữ ký số, blockchain, HMAC
SHA-38496 ký tự (384 bit)CóSubresource Integrity, chứng chỉ TLS
SHA-512128 ký tự (512 bit)CóKhi cần biên an toàn lớn; nhanh trên máy 64-bit

Vuốt ngang để xem cả bảng →

“Không còn an toàn” nghĩa là có thể cố tình tạo hai dữ liệu khác nhau cùng mã băm. Để phát hiện tệp hỏng ngẫu nhiên, MD5 vẫn dùng được.

Mã băm của “abc” để tự kiểm tra

Các giá trị dưới đây là vector chuẩn trong RFC 1321 (MD5) và FIPS 180-4 (SHA). Gõ abc vào ô văn bản để so.

Thuật toánMã băm hex
MD5900150983cd24fb0d6963f7d28e17f72
SHA-1a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Ví dụ thực tế

Kiểm tra tệp ISO tải về

Trang tải Ubuntu công bố SHA-256 của tệp ISO. Chọn tệp ở tab “Tệp”, dán chuỗi SHA-256 vào ô đối chiếu: báo “Khớp với SHA-256” nghĩa là tệp không bị hỏng hay bị thay đổi trên đường tải.

Kiểm tra chữ ký webhook

Cổng thanh toán gửi kèm header chữ ký HMAC-SHA-256 của nội dung yêu cầu. Bật HMAC, nhập khoá bí mật, dán đúng nội dung JSON nhận được: mã HMAC-SHA-256 phải trùng với header.

Tạo giá trị integrity cho thẻ script

Subresource Integrity cần dạng sha384-<Base64>. Dán nội dung tệp JavaScript, chọn định dạng Base64 rồi lấy dòng SHA-384, thêm tiền tố “sha384-”.

Phát hiện hai tệp trùng nhau

Hai tệp ảnh khác tên nhưng có cùng SHA-256 thì giống hệt nhau từng byte, có thể xoá bớt một bản. Khác dù chỉ một byte là mã khác hoàn toàn.

Lỗi thường gặp và cách xử lý

Mã băm văn bản khác với kết quả trên máy chủ.
Thường do khác một ký tự vô hình: xuống dòng ở cuối (\n hoặc \r\n), dấu cách thừa, hoặc chữ có dấu dạng tổ hợp. Công cụ băm đúng từng ký tự trong ô, kể cả xuống dòng.
Checksum không khớp dù đúng tệp.
Kiểm tra checksum thuộc thuật toán nào (độ dài 32 / 40 / 64 / 128 ký tự hex) và tệp đã tải xong hoàn toàn. Nếu vẫn lệch, tải lại từ nguồn chính thức.
Dùng MD5 hay SHA-256 để lưu mật khẩu.
Không nên dùng bất kỳ hàm băm nhanh nào cho mật khẩu. Hãy dùng thuật toán chuyên dụng có “muối” và chậm có chủ đích như Argon2id, bcrypt hoặc scrypt.
Tệp trên 500 MB không băm được.
Giới hạn để trình duyệt không hết bộ nhớ. Với tệp lớn hơn, dùng lệnh sha256sum (Linux), shasum -a 256 (macOS) hoặc certutil -hashfile <tệp> SHA256 (Windows).
Chữ ký HMAC không khớp.
Khoá phải đúng từng ký tự (không thừa dấu cách) và nội dung phải là bản thô nhận được, chưa được định dạng lại JSON.

Mã băm hoạt động thế nào

Hàm băm mật mã nhận dữ liệu bất kỳ và trả về chuỗi có độ dài cố định. Nó có ba tính chất: tính lại luôn ra cùng kết quả, không thể suy ngược ra dữ liệu gốc, và gần như không thể tìm hai dữ liệu khác nhau cho cùng một mã. Vì vậy mã băm được dùng như dấu vân tay để kiểm tra tính nguyên vẹn.

Băm không phải mã hoá: không có khoá để giải ngược. Base64 thì ngược lại, chỉ là cách viết lại dữ liệu và ai cũng đổi về được.

HMAC khác băm thường ở đâu

HMAC (RFC 2104) trộn một khoá bí mật vào quá trình băm. Chỉ ai biết khoá mới tạo ra được đúng mã, nên bên nhận kiểm tra được thông điệp đến từ đúng người gửi và không bị sửa. Đây là cách các dịch vụ thanh toán, GitHub, Stripe ký webhook.

Thuật ngữ

Checksum
Mã băm được công bố kèm tệp để người tải kiểm tra tệp nguyên vẹn.
Collision (trùng mã)
Hai dữ liệu khác nhau cho cùng mã băm; tạo được cố ý là thuật toán đã bị phá.
HMAC
Mã xác thực thông điệp dùng hàm băm kết hợp khoá bí mật.
Hex
Cách viết mỗi byte bằng 2 chữ số 0–9, a–f.
SHA-2
Họ hàm băm gồm SHA-224, SHA-256, SHA-384, SHA-512 (FIPS 180-4).
Muối (salt)
Chuỗi ngẫu nhiên thêm vào mật khẩu trước khi băm để hai mật khẩu giống nhau không cùng mã.

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

Có giải mã ngược MD5 được không?

Không có cách tính ngược. Các trang “giải mã MD5” thực chất tra bảng mã của những chuỗi phổ biến đã băm sẵn, nên chỉ tìm được mật khẩu yếu, ngắn.

Tệp của tôi có bị tải lên máy chủ không?

Không. Tệp được đọc và băm trong Web Worker của trình duyệt, không có dữ liệu nào gửi đi.

Nên dùng thuật toán nào?

SHA-256 cho hầu hết nhu cầu: kiểm tra tệp, chữ ký, HMAC. Chỉ dùng MD5 hoặc SHA-1 khi hệ thống cũ bắt buộc.

Vì sao cùng chữ “Việt” mà mã khác nhau giữa hai máy?

Chữ có dấu có hai cách lưu Unicode (dựng sẵn và tổ hợp). Hai cách cho các byte UTF-8 khác nhau nên mã băm khác. Nhập lại bằng cùng bộ gõ, hoặc chuẩn hoá về NFC trước khi băm.

Base64 và hex của cùng mã băm có khác nhau không?

Cùng một giá trị, chỉ khác cách viết: hex dùng 2 ký tự mỗi byte, Base64 ngắn hơn khoảng 1/3. Ô đối chiếu nhận cả hai dạng.

Băm tệp 500 MB mất bao lâu?

Tuỳ máy, thường vài giây tới khoảng một phút, phần lâu nhất là MD5 vì chạy bằng JavaScript. Thanh tiến độ cho biết đã xử lý tới đâu.

Đánh giá và bình luận

Đang tải…