Trình kiểm tra hash tệp

Tệp

Điều này có thể so sánh với "sự biến đổi của kỳ vọng" bên dưới; thuật toán cần được xem xét lại.

Tính giá trị hash MD5, SHA-1, SHA-256, SHA-512 cho tệp cục bộ ngay trong trình duyệt, sao chép một cú nhấp hoặc dán giá trị kỳ vọng chính thức để tự động so sánh, phù hợp để xác minh tải về, so sánh phiên bản và thu thập bằng chứng điện tử.

Đề xuất Liên quan

Hash tệp là gì?

Hash tệp (File Hash) là dấu vân tay kỹ thuật số ánh xạ nội dung của một tệp bất kỳ thành chuỗi có độ dài cố định thông qua thuật toán hash. Cùng một tệp mỗi lần tính đều cho kết quả giống nhau, và bất kỳ thay đổi nào về nội dung đều khiến giá trị hash hoàn toàn khác.

Các công dụng điển hình: ①Sau khi tải về, so sánh hash chính thức để xác nhận tệp không bị chỉnh sửa; ②Quản lý phiên bản — Git / SVN dùng SHA-1 để định danh mỗi lần commit; ③So sánh tệp — nhanh chóng xác định hai tệp có giống nhau không; ④Điều tra số — dùng hash tệp làm bằng chứng toàn vẹn cho bằng chứng điện tử.

Các thuật toán được công cụ này hỗ trợ: MD5 (128 bit, đã không còn chống xung đột), SHA-1 (160 bit, đã bị Google công khai tạo xung đột), SHA-256 (256 bit, đang được khuyến nghị chính), họ SHA-512 (512 bit / SHA-384 / SHA-512/256, an toàn hơn). Hash khác với mã hóa: hash là một chiều, không thể suy ngược nội dung tệp từ giá trị hash.

Trường hợp sử dụng

  • Sau khi tải về phần mềm, ảnh ISO, firmware, so sánh hash MD5 / SHA-256 do trang chính thức công bố để xác nhận tệp không bị cài cắm cửa hậu hoặc hỏng trong quá trình truyền.
  • Trước khi gửi tệp lớn cho đồng nghiệp, hãy tính sẵn hash để họ tính lại và so sánh sau khi nhận, đảm bảo quá trình truyền không bị lỗi.
  • Tạo hash SHA-256 cho các bằng chứng điện tử như hợp đồng, báo giá, bản scan để lưu trữ, làm cơ sở chứng minh "chưa bị chỉnh sửa" về sau.
  • So sánh hai phiên bản của cùng một tài liệu (trước / sau khi sửa), trước tiên dùng hash xác nhận chúng có hoàn toàn giống nhau không, rồi mới quyết định có phát hành lại hay không.
  • Kiểm tra đồng bộ giữa các kho Git, gói sao lưu hoặc nút phản chiếu: chỉ cần tính một lượt SHA-256 là nhanh chóng biết các nút có đồng bộ không.

Cách Sử dụng

  1. Nhấp vào vùng tải lên, chọn một tệp cục bộ bất kỳ (mỗi lần xử lý một tệp).
  2. Công cụ tự động bắt đầu tính hash, thanh tiến trình sẽ hiển thị phần trăm theo thời gian thực, tệp càng lớn thời gian chờ càng lâu.
  3. Xem kết quả hash ở bên phải, chuyển đổi thuật toán, chữ hoa / chữ thường hoặc biến thể phân nhánh của họ SHA-512 theo nhu cầu.
  4. Dán giá trị kỳ vọng do bên chính thức hoặc đối phương cung cấp vào ô "giá trị kỳ vọng", công cụ sẽ lập tức hiển thị khớp hoặc không khớp.
  5. Nhấn nút "Sao chép hash" để lưu kết quả vào bộ nhớ tạm, hoặc nhấn "Tính lại" để làm mới tệp hiện tại.

Tính năng

  • Tính toán cục bộ bảo vệ quyền riêng tư: mọi phép tính hash đều được thực hiện trong trình duyệt hiện tại, tệp không được tải lên máy chủ.
  • Bốn thuật toán chính: MD5, SHA-1, SHA-256, SHA-512, bao phủ hầu hết các tình huống xác minh tải về và dấu vân tay tệp.
  • Phân nhánh họ SHA-512: có thể chuyển đổi giữa SHA-512, SHA-384, SHA-512/256 để khớp với các giá trị kỳ vọng có độ dài khác nhau.
  • Chuyển đổi chữ hoa / chữ thường một cú nhấp: mặc định xuất chữ thường, khi so sánh với công cụ Windows hoặc hash chính thức viết hoa chỉ cần tích chọn.
  • Dán giá trị kỳ vọng tự động so sánh: dán hash do bên chính thức cung cấp vào ô "giá trị kỳ vọng", lập tức hiển thị kết quả khớp hoặc không khớp.
  • Thanh tiến trình thời gian thực: đọc và tính theo khối với tệp lớn, phần trăm cập nhật liên tục, không làm treo trình duyệt.
  • Sao chép giá trị hash một cú nhấp: sau khi tính xong nhấn nút sao chép, kết quả vào thẳng bộ nhớ tạm để dán lại vào bảng kiểm tra hoặc cửa sổ chat.

Best Practices

Ưu tiên dùng SHA-256 để xác minh tệp tải về

Phần mềm hiện đại, bản phân phối Linux, ảnh container do trang chính thức công bố hầu như đều cung cấp SHA-256. MD5 chỉ nên dùng khi trang chính thức ghi rõ MD5 và bạn xác nhận được nguồn đáng tin, tránh gánh chịu rủi ro không cần thiết do điểm yếu của thuật toán.

Bỏ qua chữ hoa/thường khi so sánh

Bản thân thuật toán hash không phân biệt chữ hoa/thường, công cụ mặc định xuất chữ thường, nhưng dòng lệnh Linux / macOS thường là chữ thường, công cụ kiểm tra của Windows đôi khi hiển thị chữ hoa. Khi thấy không khớp, hãy xem có phải chỉ khác chữ hoa/thường không, tránh nhầm lẫn là tệp bị hỏng.

Giá trị hash phải bao gồm toàn bộ nội dung tệp

Gói nén, lưu trữ nhiều tệp, ảnh ISO phải được tính hash ở trạng thái "nguyên vẹn". Nếu giải nén trước rồi mới hash, chỉ có thể chứng minh "nội dung đã giải nén" là đúng, không thể chứng minh bản thân gói nén không có vấn đề.

Tình huống bằng chứng điện tử nên lưu cả hash và chữ ký

Hash SHA-256 chỉ chứng minh được "tính toàn vẹn của tệp", không chứng minh được "ai là người gửi". Khi cần dùng làm bằng chứng điện tử ra bên ngoài, tốt nhất ngoài hash còn nên xếp chồng thêm chữ ký số của người gửi hoặc dấu thời gian từ bên thứ ba đáng tin, chỉ hash đơn thuần không đủ tạo thành chuỗi bằng chứng hoàn chỉnh.

Tệp cực lớn hoặc thiết bị không đủ mạnh nên đổi công cụ

Công cụ này phù hợp với các tệp thông thường dưới mức GB. Với tệp cực lớn hoặc thiết bị cũ, tính toán theo khối sẽ rất chậm, lúc này phù hợp hơn là dùng openssl dgst, certutil hoặc sha256sum có sẵn trong hệ thống ở dòng lệnh để xử lý nhanh.

Khi cần xác minh toàn vẹn có khóa nên dùng HMAC

Hash tệp chỉ xác minh tính toàn vẹn nội dung, không xác minh danh tính người gửi. Nếu bạn cần xác nhận "tệp này đến từ nguồn tôi tin tưởng và chưa bị chỉnh sửa", hãy dùng trình tạo HMAC kết hợp khóa chia sẻ để tạo chuỗi hash, thay vì hash tệp thông thường.

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

Chọn MD5 hay SHA-256?

Xác minh tải về thường ngày, so sánh phiên bản, loại bỏ trùng lặp tệp thì dùng SHA-256 ổn định hơn. MD5 chỉ nên dùng khi đối phương chỉ cung cấp MD5, hoặc bạn xác nhận tình huống không liên quan đến bảo mật (ví dụ loại bỏ trùng lặp cục bộ). Các tình huống nhạy cảm về bảo mật (bằng chứng điện tử, xác minh firmware) hãy kiên trì dùng SHA-256 trở lên.

Chữ hoa/thường khác nhau có tính là kiểm tra thất bại không?

Không tính. Bản thân thuật toán hash không có khái niệm chữ hoa/thường, chỉ là cách hiển thị khác nhau. Công cụ mặc định xuất chữ thường, khi gặp giá trị kỳ vọng viết hoa hãy tích chọn "Xuất chữ hoa" rồi tính lại. Khi so sánh hãy bỏ qua chữ hoa/thường, chỉ xem các ký tự có hoàn toàn giống nhau không.

Tại sao giá trị hash của tôi không khớp với công bố chính thức?

Nguyên nhân thường gặp: ①Tệp bị hỏng trong quá trình tải về, hãy tải lại; ②Phiên bản bạn tải không khớp với phiên bản mà trang chính thức cung cấp hash (đối chiếu số phiên bản, tên tệp, mã phân cuốn); ③Bạn chỉ tính một phần nội dung của gói nén; ④Bên chính thức công bố thuật toán khác (ví dụ bạn dùng MD5, đối phương công bố SHA-256).

Công cụ này có hỗ trợ SHA-224, BLAKE2, SM3 không?

Hiện tại hỗ trợ MD5, SHA-1, SHA-256, và họ SHA-512 (SHA-512, SHA-384, SHA-512/256). Tạm thời chưa hỗ trợ SHA-224, BLAKE2, SM3, v.v. Nếu bạn cần các thuật toán này, nên chuyển sang dùng công cụ dòng lệnh cục bộ (openssl, sha256sum, v.v.).

Tệp có được tải lên máy chủ không? Có an toàn không?

Không. Công cụ này dùng crypto-js để tính hash theo khối ngay trong trình duyệt, nội dung tệp luôn nằm trong thiết bị và bộ nhớ trình duyệt của bạn, không gửi đến bất kỳ máy chủ từ xa nào. Xử lý tài liệu nhạy cảm, hợp đồng, firmware đều có thể yên tâm sử dụng.

Một lần có thể tính nhiều tệp không?

Trang hiện tại xử lý một tệp mỗi lần. Nếu cần kiểm tra hàng loạt, có thể lặp lại thao tác, hoặc chuyển sang dùng công cụ dòng lệnh cục bộ (certutil -hashfile trên Windows, md5sum / shasum trên macOS / Linux) để liệt kê hash của nhiều tệp cùng lúc.

Nên chọn SHA-512 hay SHA-384?

Khi đối phương cung cấp rõ SHA-384 thì chọn SHA-384; các tình huống khác cần "an toàn hơn" mặc định chọn SHA-512. SHA-512/256 có độ dài đầu ra giống SHA-256 (64 ký tự), nhưng bên trong dùng hàm nén SHA-512, phù hợp để có khả năng chống xung đột mạnh hơn trong các hệ thống giới hạn độ dài đầu ra.

Hash và chữ ký số khác nhau như thế nào?

Hash chỉ xác minh "nội dung tệp có toàn vẹn không", không chứng minh được "ai là người gửi". Chữ ký số = hash + mã hóa bằng khóa riêng của người gửi, bên xác minh dùng khóa công khai giải mã là có thể đồng thời xác minh tính toàn vẹn và danh tính người gửi. Khi cần chứng minh nguồn gốc, nên làm thêm một lần xác minh chữ ký ngoài hash.

Hash tệp lớn có làm treo trình duyệt không?

Công cụ này dùng đọc luồng theo khối 2MB, các tệp phổ biến vài chục MB đến vài trăm MB đều xử lý bình thường. Với tệp trên cấp GB hoặc thiết bị yếu, thời gian tính sẽ tăng rõ rệt; nếu bạn chỉ cần kiểm tra tệp lớn dạng này ở dòng lệnh, nên chuyển sang dùng công cụ có sẵn trong hệ thống hoặc openssl.

Xử lý sự cố

Giá trị hash không khớp với công bố chính thức

Trước tiên xác nhận bạn đã tải đúng phiên bản mà trang chính thức cung cấp hash (tên tệp, số phiên bản, mã phân cuốn đều phải đối chiếu), rồi kiểm tra chữ hoa/thường có khớp không, có tính trên toàn bộ tệp không. Nếu tất cả đều khớp mà vẫn không trùng, hãy tải lại một lần, có thể tệp đã bị hỏng trong quá trình tải về.

Tệp lớn tính rất chậm

Công cụ này dùng tính toán luồng theo khối 2MB cho tệp lớn. Thường vài trăm MB trở xuống hoàn thành trong vài giây. Trên cấp GB nên chuyển sang dòng lệnh: trên Windows dùng certutil -hashfile <tên_tệp> SHA256, trên macOS / Linux dùng shasum -a 256 <tên_tệp>.

Tích chọn chữ hoa thì giá trị hash thay đổi

Bản thân giá trị hash không thay đổi, chỉ là các chữ cái được chuyển sang chữ hoa. Khi so sánh hãy bỏ qua chữ hoa/thường, hoặc thống nhất giá trị kỳ vọng về cùng một dạng rồi hãy so sánh.

Sau khi đổi thuật toán kết quả không làm mới

Sau khi chuyển đổi thuật toán hoặc chữ hoa / chữ thường, công cụ sẽ tự động tính lại tệp hiện tại. Nếu không làm mới, hãy nhấn nút "Tính lại" để ép buộc tính lại một lần.

Thuật ngữ

MD5
Thuật toán hash cho đầu ra 128 bit (32 ký tự thập lục phân). Tốc độ nhanh nhưng đã không còn chống xung đột (bị phá bởi nhóm Wang Xiaoyun năm 2004), phù hợp làm dấu vân tay tệp hoặc loại bỏ trùng lặp, không nên dùng trong các tình huống nhạy cảm về bảo mật.
SHA-1
Đầu ra 160 bit (40 ký tự thập lục phân). Năm 2017 Google công khai xung đột SHA-1, các trình duyệt và hệ thống chính đã ngừng khuyến nghị sử dụng, nhưng lịch sử Git cũ vẫn phụ thuộc vào nó.
SHA-256
Thành viên của họ SHA-2, cho đầu ra 256 bit (64 ký tự thập lục phân). Hiện là thuật toán được khuyến nghị chính, được dùng trong HTTPS, Bitcoin, các kho Git mới, v.v.
SHA-512
Đầu ra 512 bit (128 ký tự thập lục phân), khả năng chống xung đột mạnh hơn SHA-256, chạy nhanh hơn một chút với tệp dài. Công cụ này đồng thời hỗ trợ SHA-384 (96 ký tự) và SHA-512/256 (64 ký tự, cùng độ dài với SHA-256 nhưng bên trong dùng hàm nén SHA-512).
Thập lục phân (Hex)
Dạng hiển thị phổ biến nhất của giá trị hash, gồm các ký tự 0-9 và a-f, mỗi byte chiếm 2 ký tự. Công cụ này hỗ trợ chuyển đổi chữ hoa hoặc chữ thường.
Xung đột (Collision)
Hai tệp khác nhau sinh ra giá trị hash hoàn toàn giống nhau. Khả năng chống xung đột là chỉ số cốt lõi để đo mức an toàn của thuật toán hash, MD5 và SHA-1 đã được chứng minh tồn tại xung đột thực tế.
Tính toán cục bộ
Mọi phép tính hash đều được thực hiện trong trình duyệt và bộ nhớ thiết bị hiện tại, nội dung tệp không được tải lên máy chủ từ xa, phù hợp để xác minh các tài liệu nhạy cảm.

So sánh các thuật toán được công cụ hỗ trợ

Khi chọn thuật toán, ưu tiên xem đối phương cung cấp loại hash nào và bạn có đang ở tình huống nhạy cảm về bảo mật không.

Thuật toánĐộ dài đầu raMức an toànTình huống điển hình
MD5128 bit / 32 ký tựYếu (đã bị phá xung đột)Loại bỏ trùng lặp cục bộ, tương thích phiên bản cũ
SHA-1160 bit / 40 ký tựYếu (đã bị phá xung đột)Tương thích lịch sử Git
SHA-256256 bit / 64 ký tựMạnhXác minh tải về, firmware, bằng chứng (khuyến nghị)
SHA-384384 bit / 96 ký tựMạnhYêu cầu bảo mật cao, yêu cầu của giao thức
SHA-512512 bit / 128 ký tựMạnh hơnYêu cầu bảo mật cao
SHA-512/256256 bit / 64 ký tựMạnhCần độ dài SHA-256 nhưng muốn dùng lõi SHA-512

Khuyến nghị thuật toán cho các tình huống khác nhau

Cùng một tệp ở các tình huống sử dụng khác nhau, thuật toán phù hợp nhất cũng không giống nhau.

Tình huống sử dụngThuật toán khuyến nghịGiá trị cốt lõi
Xác minh tải về phần mềm / ảnh ISO / firmwareSHA-256Phổ biến, trang chính thức hỗ trợ rộng
Dấu vân tay commit GitSHA-1Tương thích với lịch sử
Loại bỏ trùng lặp tệp cục bộMD5Tốc độ nhanh, rủi ro thấp
Thu thập bằng chứng điện tửSHA-256 + chữ kýHash cộng chữ ký, vững hơn về mặt tư pháp
Đối chiếu tính nhất quán khi truyềnSHA-256Cả hai bên đều tính được, so sánh đơn giản
Cần độ dài quy định bởi giao thứcSHA-384 / SHA-512/256Thỏa mãn ràng buộc của giao thức

Authoritative References