Trình tạo băm & Checksum
Nhận MD5, SHA-1, SHA-256, SHA-384 và SHA-512 cho văn bản và tệp cùng lúc. Xác minh tệp đã tải xuống so với checksum chính thức để đảm bảo nó không bị can thiệp. Tất cả hoạt động cục bộ, không có gì rời khỏi trình duyệt của bạn.
- Thuật toán
- MD5 · SHA-1/256/384/512
- Công cụ
- Web Crypto API
- Quyền riêng tư
- 100% cục bộ
- Đầu vào
- Văn bản / tệp
Thả tệp vào đây, hoặc nhấp để duyệt
Byte tệp được đọc cục bộ để tính toán checksum — không có gì được tải lên. Hoạt động với trình cài đặt, hình ảnh đĩa và tệp lưu trữ.
TÍNH NĂNG
Tất cả năm loại băm trên một trang
Từ dấu vân tay nhanh đến chữ ký an toàn — mọi loại băm mà nhà phát triển, chuyên gia vận hành và người dùng cần để xác minh tải xuống.
Năm thuật toán
MD5, SHA-1, SHA-256, SHA-384 và SHA-512 hiển thị cùng với độ dài bit đầu ra — không còn cần chuyển đổi giữa các công cụ.
Tính toán thời gian thực
Băm văn bản ngay khi bạn nhập, không cần nhấn nút. Kết quả dùng font monospace — nhấp vào một hàng để sao chép.
Kiểm tra tính toàn vẹn tệp
Thả trình cài đặt, hình ảnh đĩa hoặc tệp lưu trữ vào, sau đó so sánh với checksum chính thức để xác minh tải xuống không bị can thiệp.
Cục bộ, không tải lên
Gia đình SHA sử dụng Web Crypto API tích hợp sẵn của trình duyệt. Văn bản và tệp không bao giờ rời khỏi máy của bạn — nội dung nhạy cảm được xử lý an toàn.
Phù hợp chuẩn UTF-8
Văn bản được băm dưới dạng byte UTF-8, vì vậy kết quả hoàn toàn khớp với md5sum, md5() của PHP và hashlib của Python.
Sao chép một chạm
Sao chép từng mã băm riêng lẻ hoặc toàn bộ theo định dạng checksum chuẩn, sẵn sàng để dán vào terminal.
Điều bạn cần biết về mã băm
Ý tưởng đơn giản, nhưng sử dụng sai loại mã băm cho công việc sai thực sự là lỗi bảo mật.
MD5 và SHA-1 chính xác là gì?
MD5 (Thuật toán Truyền thông-Digest 5) được thiết kế bởi Ronald Rivest tại MIT và xuất bản năm 1992 dưới dạng RFC 1321, tạo ra một bản digest cố định 128 bit (32 ký tự thập lục phân) làm sản phẩm kế nhiệm của MD4. SHA-1 được thiết kế bởi Cơ quan An ninh Quốc gia Hoa Kỳ và xuất bản năm 1995 dưới dạng chuẩn liên bang FIPS 180-1, tạo ra 160 bit. Cả hai trở thành các thuật toán băm được triển khai rộng rãi nhất trong hai thập kỷ sau đó — được sử dụng cho tổng kiểm tra tệp, lưu trữ mật khẩu, chữ ký số và ID commit Git. Lưu ý rằng chúng vẫn tạo ra digest chính xác cho đến nay; "không an toàn" có nghĩa là khả năng chống va chạm của chúng đã bị phá vỡ, không phải kết quả đầu ra của chúng sai.
Băm, mã hóa và mã hóa (encoding) có giống nhau không?
Không — chúng giải quyết các vấn đề khác nhau. Mã hóa (như Base64 hoặc URL encoding) là một biến đổi định dạng có thể đảo ngược, bất kỳ ai cũng có thể hoàn tác mà không cung cấp bảo mật. Mã hóa có thể đảo ngược bằng một khóa: văn bản thuần trở thành văn bản mã hóa và khóa đúng sẽ giải mã nó. Băm là một chiều, không có khóa và bản gốc không thể khôi phục từ digest — nó được sử dụng cho dấu vân tay, kiểm tra tính toàn vẹn và chữ ký. Hai quan niệm sai lầm phổ biến: coi Base64 là "mã hóa", và nói rằng một mật khẩu đã được "mã hóa bằng MD5" — đó là băm, và còn là cách không an toàn để lưu trữ mật khẩu nữa.
Tại sao không thể đảo ngược mã băm để lấy lại bản gốc?
Mã băm là một hàm một chiều: đầu vào bất kỳ độ dài được nén thành một digest cố định, loại bỏ hầu hết thông tin. Giống như bạn không thể tái tạo một câu từ số lượng từ của nó, bản gốc không thể được suy ra từ digest. Các thuật toán an toàn được thiết kế đặc biệt để làm cho việc đảo ngược như vậy trở nên không khả thi về mặt tính toán.
MD5 và SHA-1 vẫn có sử dụng được không?
Để kiểm tra xem tệp có bị lỗi tình cờ trong quá trình truyền hay không — có, bất kỳ thay đổi byte thừa nào cũng hầu như luôn thay đổi MD5. Nhưng không bao giờ dùng cho bảo mật: các cuộc tấn công va chạm thực tế tồn tại cho cả hai (nhà nghiên cứu có thể tạo ra hai tệp khác nhau có cùng MD5 theo kiểm soát của họ). Sử dụng SHA-256 hoặc cao hơn cho mật khẩu, chữ ký và chứng chỉ.
Tại sao mã băm của tôi khác với công cụ khác cho cùng văn bản?
Ba lý do thường gặp: ① mã hóa ký tự khác (công cụ này luôn dùng UTF-8; các công cụ cũ hơn có thể dùng GBK hoặc Latin-1); ② ký tự xuống dòng cuối — echo trên dòng lệnh tự động thêm một ký tự (dùng echo -n); ③ một khoảng trắng thừa hoặc ký tự vô hình khi sao chép. Mã băm nhạy cảm với từng byte, vì vậy một byte sai sẽ thay đổi kết quả hoàn toàn.
Tại sao không thể lưu mật khẩu dưới dạng MD5/SHA-256 thuần?
Các mã băm thông thường rất nhanh. Với bảng băm bị rò rỉ, kẻ tấn công có thể thử hàng tỷ dự đoán mỗi giây, và bảng cầu vồng (rainbow tables) tra cứu ngược các mật khẩu phổ biến tức thì. Mật khẩu cần các thuật toán chậm, tốn nhiều bộ nhớ có chủ ý (bcrypt, scrypt, Argon2) với một muối (salt) duy nhất cho mỗi mật khẩu, làm cho brute force trở nên quá tốn kém.
Làm cách nào để kiểm tra tính toàn vẹn của tệp đã tải xuống?
Tìm checksum được công bố trên trang chính thức (thường là SHA-256), kéo tệp đã tải xuống vào tab "File checksum" tại đây, và dán giá trị chính thức vào ô phía trên kết quả. Công cụ sẽ tự động phát hiện thuật toán dựa trên độ dài giá trị và tô màu xanh hàng khớp khi các byte của tệp hoàn toàn giống với phiên bản do nhà phát hành phát hành; màu đỏ nghĩa là tệp đã bị hỏng hoặc bị thay thế thông qua cuộc tấn công middle-in-the-middle — không nên chạy tệp này.
Nên sử dụng thuật toán nào trong năm thuật toán này
Chọn dựa trên tình huống sử dụng. Các thuật toán mới hơn tạo ra các bản tổng hợp dài hơn, chống tấn công tốt hơn và tốn nhiều tài nguyên tính toán hơn một chút.
| Thuật toán | Năm giới thiệu | Độ dài đầu ra | Mức độ bảo mật | Sử dụng phổ biến |
|---|---|---|---|---|
| MD5 | 1992 | 128 bits (32 ký tự) | Đã bị bẻ khóa; có thể tạo va chạm thực tế | Dấu vân tay không yêu cầu bảo mật, loại bỏ bản sao, tương thích với hệ thống cũ |
| SHA-1 | 1995 | 160 bits (40 ký tự) | Có thể tạo va chạm thực tế kể từ năm 2017 | ID lịch sử Git và các hệ thống cũ khác; không dùng cho các mục đích bảo mật mới |
| SHA-256 | 2001 | 256 bits (64 ký tự) | An toàn hiện tại | Checksum tệp, chữ ký, chứng chỉ TLS, blockchain — lựa chọn mặc định phổ quát |
| SHA-384 | 2001 | 384 bits (96 ký tự) | An toàn | SHA-512 được cắt bớt cho các chế độ tuân thủ yêu cầu 384 bits |
| SHA-512 | 2001 | 512 bits (128 ký tự) | An toàn | Chữ ký độ tin cậy cao; thường nhanh hơn SHA-256 trên CPU 64-bit |
"An toàn" nghĩa là cho đến nay vẫn chưa có cuộc tấn công tạo va chạm công khai nào thực tế. Để lưu mật khẩu, hãy sử dụng bcrypt/Argon2 bất kể thuật toán băm nào được chọn.
Checksum: cách xác minh tệp đã tải xuống thực tế
Chuỗi MD5 hay SHA-256 trên trang tải xuống dùng để làm gì, cách so sánh nó và so sánh với cái gì — tất cả đều có trong phần này.
Tại sao cần xác minh
Tệp trên đĩa của bạn không nhất thiết giống tệp trên máy chủ. Chỉ cần so sánh checksum trong mười giây có thể phòng ngừa ba loại sự cố:
Các tệp lớn tải xuống tiếp tục và mạng không ổn thường có lỗi byte không mong muốn; khắc phục sự cố trình cài đặt bị lỗi tốn nhiều thời gian hơn mười giây.
Nhiều bản tải xuống thực tế đến từ máy chủ bản sao (mirror) hoặc CDN, nơi có thể xảy ra lỗi đồng bộ hoặc bộ nhớ đệm gây ra phiên bản lỗi thời — hoặc tệp bị cắt.
Khi nguồn tải xuống bị xâm nhập hoặc mạng công cộng bị chiếm quyền điều khiển, tệp có thể bị cài mã độc. Năm 2016, trang Linux Mint bị hack và các liên kết tải xuống được thay thế bằng ISO có mã độc — phản ứng đầu tiên của dự án là kêu gọi mọi người kiểm tra checksum.
Checksum là gì
Nhà xuất bản tạo băm tệp trên máy chủ và đăng kết quả lên trang tải về; sau khi tải xong, bạn sẽ băm lại tệp tại máy cục bộ. Nếu hai chuỗi trùng khớp từng ký tự, mọi byte của tệp đều giống như nhà xuất bản phát hành — không bị lỗi hay sửa đổi. Việc kiểm tra rất nhạy cảm với từng byte: thay đổi một byte cũng đủ khiến giá trị hoàn toàn khác. Nói rộng ra, sum kiểm tra cũng bao gồm các phương án đơn giản như CRC32 để phát hiện lỗi tình cờ, còn các hàm băm mã hóa như MD5/SHA thì chống lại sự giả mạo có chủ đích.
Xác minh tệp bằng ba bước
-
1
Lấy sum kiểm tra chính thức
Trên trang tải về, tìm giá trị MD5 / SHA-256 đã được đăng (thường ghi nhãn là "checksum" hoặc đi kèm tệp .sha256) và sao chép toàn bộ chuỗi.
-
2
Kéo thả tệp và dán nội dung
Chuyển sang tab "File checksum" phía trên, kéo thả tệp vừa tải vào, rồi dán sum kiểm tra vào ô phía trên kết quả.
-
3
Đọc kết quả dựa vào màu sắc
Công cụ sẽ tự động nhận diện thuật toán dựa vào độ dài giá trị: màu xanh có nghĩa tệp trùng khớp hoàn toàn với bản phát hành chính thức và an toàn để sử dụng; màu đỏ có nghĩa tệp có thể bị lỗi hoặc sửa đổi — không nên chạy tệp này.
Đọc sum kiểm tra trên trang web chính thức
Các trang tải về ghi sum kiểm tra theo nhiều kiểu khác nhau, nhưng tất cả đều có hai thành phần cơ bản: giá trị băm và tên tệp. Ba định dạng sau là phổ biến nhất — khi dán vào, chỉ lấy phần giá trị băm (công cụ này tự động bỏ qua khoảng trắng và ngắt dòng):
# 1. Dòng đơn: chỉ giá trị
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
# 2. Định dạng sha256sum: giá trị + hai dấu cách + tên tệp (tệp SHA256SUMS chứa nhiều dòng như thế này)
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a ubuntu-24.04.iso
# 3. Định dạng BSD: Thuật toán (tên tệp) = giá trị
SHA256 (ubuntu-24.04.iso) = a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
MD5 hay SHA-256
Hãy xác minh bằng thứ mà trang chính thức cung cấp, nhưng nếu bạn có lựa chọn: MD5 hoàn toàn đủ để chống lỗi tình cờ trong quá trình truyền tải (mọi thay đổi bất ngờ đều làm thay đổi MD5). Để chống sự sửa đổi có chủ đích — ví dụ phần mềm bảo mật, chứng chỉ, gói đã ký — bạn cần SHA-256 hoặc thuật toán mạnh hơn, vì các cuộc tấn công va chạm thực tế cho phép kẻ tấn công tạo ra hai tệp khác nhau có cùng MD5. Chi tiết sẽ được trình bày trong phần "lịch sử bảo mật" bên dưới.
Xác minh bằng dòng lệnh thay thế
Trên Linux và macOS, công cụ sum kiểm tra chấp nhận tùy chọn -c để xác minh toàn bộ danh sách tệp tự động — không cần so sánh thủ công. Các lệnh tích hợp sẵn trên Windows chỉ tính giá trị, bạn cần tự so sánh với chuỗi chính thức.
| Môi trường | Lệnh xác minh |
|---|---|
| Linux | sha256sum -c SHA256SUMS (kiểm tra mọi tệp được liệt kê trong danh sách) |
| macOS | shasum -a 256 -c checksum.txt |
| Kiểm tra nhanh giá trị đơn | echo "giá trị-chính thức tên-tệp" | sha256sum -c - (in OK nếu thành công) |
| Windows | Tính toán bằng Get-FileHash <tệp> -Algorithm SHA256, sau đó so sánh với giá trị chính thức |
Lịch sử bảo mật tóm tắt: cách MD5 bị phá vỡ
MD5 không thất bại đột ngột — từ lần tấn công đầu tiên trong giới học thuật đến các chứng chỉ bị giả mạo ngoài thực tế, đã mất hai thập kỷ.
-
1992
MD5 được công bố
Ronald Rivest phát hành MD5 trong RFC 1321. MD5 nhanh, dễ triển khai và luôn tạo ra băm 128 bit, nó nhanh chóng trở thành tiêu chuẩn thực tế cho kiểm tra checksum tệp và lưu trữ mật khẩu – và được coi là an toàn về mặt mật mã.
-
2004
Nhóm của Wang Xiaoyun tiết lộ các va chạm MD5 hoàn chỉnh
Tại CRYPTO 2004, một nhóm do nhà toán học Trung Quốc Wang Xiaoyun dẫn đầu đã chứng minh cuộc tấn công va chạm hoàn toàn vào MD5 – xây dựng hai tệp có nội dung khác nhau nhưng băm giống hệt nhau (ban đầu mất khoảng một giờ trên siêu máy tính IBM P690; sau này các cải tiến đã giảm thời gian xuống vài giây trên phần cứng thông thường). Khả năng chống va chạm mà MD5 hứa hẹn đã biến mất; tràng pháo tay kéo dài sau đó trở thành một trong những khoảnh khắc nổi tiếng nhất trong lĩnh vực mật mã.
-
2008
Chứng chỉ giả bị đánh cắp trên internet thực tế
Marc Stevens, Alexander Sotirov và những người khác đã sử dụng va chạm có tiền tố được chọn để làm giả chứng chỉ CA trung gian được các trình duyệt tin cậy: các chứng chỉ có tiền tố khác nhau mang cùng chữ ký. Bây giờ kẻ tấn công có thể phát hành chứng chỉ HTTPS "hợp lệ" cho bất kỳ trang web giả mạo nào. Các cơ quan cấp chứng chỉ đã ngừng cấp chứng chỉ MD5 ngay sau đó.
-
2012
Phần mềm độc hại Flame tấn công Windows thông qua MD5
Phần mềm độc hại Flame do nhà nước hậu thuẫn đã sử dụng va chạm MD5 để làm cho cơ quan cấp phép máy chủ đầu cuối của Microsoft ký chứng chỉ ký mã giả mạo, cho phép nó lây lan khắp Trung Đông dưới dạng bản cập nhật do Microsoft ký. Đây là cuộc tấn công thực tế đầu tiên sử dụng va chạm MD5; Microsoft đã thu hồi chứng chỉ thông qua bản vá khẩn cấp.
-
2017
SHAttered: SHA-1 bị sụp
Google và viện CWI Hà Lan (Marc Stevens et al.) đã xuất bản hai tệp PDF khác nhau có mã băm SHA-1 giống hệt nhau – với chi phí khoảng 6.500 năm CPU và 110 năm GPU. Ngay sau đó, các trình duyệt đã xóa sự tin cậy đối với chứng chỉ SHA-1, và các nền tảng Git đã đẩy nhanh quá trình chuyển đổi khỏi SHA-1. Kỷ nguyên 160 bit đã kết thúc.
Điểm tinh thần quan trọng: cuộc tấn công va chạm không "bẻ khóa" mã băm của bất kỳ tệp nào đã tồn tại – nó xây dựng hai tệp cụ thể có cùng giá trị băm. Nhưng đối với chữ ký và chứng chỉ, điều đó đã đủ để tạo ra sự giả mạo chết người.
Băm từ dòng lệnh
Khi trình duyệt không tiện dụng, mọi hệ điều hành đều đi kèm lệnh tích hợp (SHA-256 được hiển thị).
| Môi trường | Lệnh |
|---|---|
| Linux / macOS | sha256sum filename (trên macOS: shasum -a 256 filename) |
| Windows PowerShell | Get-FileHash filename -Algorithm SHA256 |
| Windows CMD | certutil -hashfile filename SHA256 |
Băm trong mã
Ví dụ tối thiểu bằng bốn ngôn ngữ phổ biến khi bạn đang viết tập lệnh hoặc tích hợp API.
async function sha256Hex(data) {
const bytes = typeof data === "string"
? new TextEncoder().encode(data)
: new Uint8Array(data);
const digest = await crypto.subtle.digest("SHA-256", bytes);
return [...new Uint8Array(digest)]
.map((b) => b.toString(16).padStart(2, "0"))
.join("");
}
// Text
console.log(await sha256Hex("hello"));
// Files: digest accepts an ArrayBuffer directly
const buf = await file.arrayBuffer();
console.log(await sha256Hex(buf));
Web Crypto gốc của trình duyệt chỉ hỗ trợ họ SHA và yêu cầu HTTPS hoặc localhost; MD5 cần thư viện của bên thứ ba.
echo hash('sha256', 'hello'); // 64 hex characters
echo md5('hello'); // same as hash('md5', 'hello')
// Streamed: hashes the file without loading it into memory
echo hash_file('sha256', 'setup.exe');
hash() và hash_file() hỗ trợ md5, sha1, sha256, sha512 và nhiều hơn nữa; việc băm tệp được xử lý theo luồng, nên nó sử dụng ít bộ nhớ.
import hashlib
print(hashlib.sha256(b"hello").hexdigest())
print(hashlib.md5(b"hello").hexdigest())
# Large files: streamed, low memory (Python 3.11+)
with open("setup.exe", "rb") as f:
print(hashlib.file_digest(f, "sha256").hexdigest())
Thư viện chuẩn hashlib không cần cài đặt; sử dụng file_digest() để băm luồng các tệp lớn (Python 3.11+).
use sha2::{Digest, Sha256};
use md5::Md5;
// Text
println!("{:x}", Sha256::digest(b"hello"));
println!("{:x}", Md5::digest(b"hello"));
// Large files: streamed, low memory
let mut file = std::fs::File::open("setup.exe")?;
let mut hasher = Sha256::new();
std::io::copy(&mut file, &mut hasher)?;
println!("{:x}", hasher.finalize());
Việc băm không có trong thư viện chuẩn; hãy thêm crates RustCrypto sha2 và md-5 vào Cargo.toml. Khi tính năng std được kích hoạt, io::copy sẽ truyền các tệp vào trình tạo băm theo luồng.
FAQ
Văn bản và tệp của tôi đã được tải lên chưa?
Không. Mọi thứ đều được tính toán trong trình duyệt của bạn: các hàm SHA gọi đến Web Crypto API tích hợp, còn MD5 chạy bằng JavaScript trên trang. Công cụ vẫn hoạt động khi ngắt mạng — hãy thử với một tệp nhạy cảm.
Tại sao văn bản trống vẫn có băm?
Thuật toán băm xác định đầu ra cố định duy nhất ngay cả đối với không byte. MD5 của một chuỗi trống là d41d8cd98f00b204e9800998ecf8427e và SHA-256 của nó bắt đầu bằng e3b0c442. Công cụ này chỉ ẩn kết quả khi đầu vào trống để bạn không sao chép chúng nhầm.
Nó có thể băm tệp mọi kích thước không?
Tùy thuộc vào bộ nhớ trình duyệt có sẵn — trình cài đặt và hình ảnh đĩa vài trăm MB thường ổn. Tệp được đọc vào bộ nhớ trong một lượt, nên đối với tệp nhiều GB, hãy ưu tiên công cụ dòng lệnh (sha256sum, certutil).
Tại sao băm có độ dài khác nhau?
Độ dài được xác định bởi thuật toán: MD5 là 32 ký tự thập lục phân, SHA-1 là 40, SHA-256 là 64 và SHA-512 là 128. Hai ký tự thập lục phân cho mỗi byte — và độ dài không phụ thuộc vào kích thước đầu vào: tệp một byte và tệp nhiều GB đều tạo ra 64 ký tự với SHA-256.
Tôi có thể dùng nó để xây dựng chữ ký API không?
Có. Nhiều nền tảng mở ký yêu cầu bằng cách băm "tham số + bí mật" với MD5 hoặc SHA-256. Công cụ này rất tiện để kiểm tra giá trị chữ ký khi gỡ lỗi; trong môi trường sản xuất, hãy tính toán băm bằng thư viện ngôn ngữ phía máy chủ của bạn và không bao giờ nhúng bí mật vào mã frontend.
Làm thế nào để so sệnh checksum với công cụ này?
Chuyển đến tab "File checksum", thả tệp vào và dán checksum từ trang chính thức vào ô phía trên kết quả. Công cụ tự động phát hiện thuật toán theo độ dài (32 ký tự MD5, 40 SHA-1, 64 SHA-256, 96 SHA-384, 128 SHA-512): hàng phù hợp sẽ chuyển sang màu xanh với ghi chú "Passed" khi chúng khớp, và màu đỏ khi không khớp. Kiểu chữ, khoảng trắng xung quanh và ngắt dòng tự động bị bỏ qua.
Công cụ liên quan
Các công cụ mã hóa, mật mã và mật khẩu khác.
Base64 Encode / Decode
Chuyển đổi giữa nhị phân và văn bản — tiện cho Data URIs và gỡ lỗi HTTP basic auth.
Trình tạo mật khẩu
Tạo mật khẩu ngẫu nhiên mạnh mẽ — mật khẩu phải ngẫu nhiên và duy nhất, không phải "mã hóa" bằng băm.
Trình kiểm tra độ mạnh mật khẩu
Kiểm tra xem mật khẩu đủ dài và ngẫu nhiên, cũng như liệu đã bị lộ trong các vụ rò rỉ dữ liệu đã biết.