Hướng dẫn · 24/09/2026

Kiểm tra file tải về bằng SHA-256 trên Windows với PowerShell

Tải xong một bộ cài chưa có nghĩa là file đã đúng phiên bản hoặc nguyên vẹn. Khi nhà phát hành công bố SHA-256, người dùng Windows có thể tính mã băm của file tải về rồi so sánh trước khi mở. Thao tác này không cần chạy bộ cài và thường không cần quyền quản trị.

Kiểm tra file tải về bằng SHA-256 trên Windows với PowerShell

Tải xong một bộ cài chưa có nghĩa là file đã đúng phiên bản hoặc nguyên vẹn. Khi nhà phát hành công bố SHA-256, người dùng Windows có thể tính mã băm của file tải về rồi so sánh trước khi mở. Thao tác này không cần chạy bộ cài và thường không cần quyền quản trị.

Hướng dẫn dùng PowerShell trên Windows, phân biệt kiểm tra toàn vẹn với kiểm tra chữ ký số. Không vô hiệu hóa Microsoft Defender, SmartScreen hoặc chính sách bảo mật để thực hiện các bước dưới đây.

1. Lấy giá trị tham chiếu từ đâu?

Mở trang phát hành chính thức bằng địa chỉ đã xác minh. Chọn đúng phiên bản, hệ điều hành, kiến trúc và định dạng file. SHA-256 của bản ARM64 không thể dùng để xác minh bản x64; hash của file ZIP cũng không phải hash của EXE nằm bên trong.

Không lấy cả file lẫn hash từ một tin nhắn hoặc website lạ rồi coi việc khớp là bằng chứng đáng tin cậy. Nếu bên xấu thay được cả hai, phép so sánh vẫn có thể thành công. Nếu nhà phát hành không cung cấp hash, không tự tạo một hash của file vừa tải rồi dùng chính nó làm “bằng chứng chính hãng”.

2. Tính SHA-256 mà không mở file

Get-FileHash của Microsoft tính hash từ nội dung file. Dùng -LiteralPath để đường dẫn có ký tự như dấu ngoặc vuông không bị hiểu là mẫu wildcard. Thay đường dẫn ví dụ bằng file thực tế của bạn.

Get-FileHash -LiteralPath 'C:\Downloads\installer.exe' -Algorithm SHA256

Kết quả gồm thuật toán, hash và đường dẫn. Tập trung vào chuỗi 64 ký tự hexadecimal ở cột Hash; đừng so sánh tên file hay kích thước thay cho nội dung. Không đưa file nội bộ hoặc tài liệu nhạy cảm lên website tính hash trực tuyến chỉ để thực hiện phép kiểm tra này.

3. So sánh tự động để tránh nhìn nhầm

Lưu đoạn sau thành verify-download-sha256.ps1. Script chỉ đọc file và báo kết quả; không cài đặt, giải nén hoặc thay đổi chính sách thực thi.

param(
    [Parameter(Mandatory = $true)][string]$DownloadPath,
    [Parameter(Mandatory = $true)][string]$ExpectedSha256
)

$ErrorActionPreference = 'Stop'
$expected = $ExpectedSha256.Trim()
if ($expected -notmatch '\A[0-9a-fA-F]{64}\z') {
    throw 'Expected SHA-256 must contain exactly 64 hexadecimal characters.'
}
if (-not (Test-Path -LiteralPath $DownloadPath -PathType Leaf)) {
    throw 'Download file not found.'
}
$actual = (Get-FileHash -LiteralPath $DownloadPath -Algorithm SHA256).Hash
if ($actual -ine $expected) {
    throw 'SHA-256 mismatch. Do not run or install this file.'
}
Write-Output 'SHA-256 matches the supplied reference. This is not a malware verdict.'

Gọi script với đường dẫn thật và hash do nhà phát hành công bố. Chuỗi HASH_64_KY_TU_TU_NHA_PHAT_HANH là placeholder, phải thay trước khi chạy:

.\verify-download-sha256.ps1 -DownloadPath 'C:\Downloads\installer.exe' -ExpectedSha256 'HASH_64_KY_TU_TU_NHA_PHAT_HANH'

Nếu máy chặn chạy script theo chính sách của tổ chức, không dùng tùy chọn bypass. Có thể dùng lệnh tính hash ở bước 2 để đọc kết quả, hoặc nhờ quản trị viên cung cấp cách kiểm tra được phê duyệt. Thông báo khớp chỉ áp dụng cho file tại thời điểm được đọc và giá trị tham chiếu đã cung cấp.

4. Khi hash không khớp

  1. Dừng việc chạy hoặc cài file, giữ thông tin nguồn tải để kiểm tra.
  2. Xác nhận đúng thuật toán SHA-256, phiên bản và kiến trúc.
  3. Kiểm tra đã tải xong, không chọn nhầm file cũ hoặc file được đổi tên.
  4. Nếu cần, tải lại từ trang chính thức rồi so sánh lại.
  5. Nếu tiếp tục lệch, liên hệ nhà phát hành hoặc đội IT; đừng sửa hash kỳ vọng thành giá trị vừa tính để làm kiểm tra “pass”.

Hash không khớp có thể do file hỏng, tải sai bản hoặc bị thay đổi; riêng phép so sánh không xác định được nguyên nhân. Ngược lại, hash khớp không khẳng định phần mềm không có mã độc hay lỗ hổng.

5. Kiểm tra chữ ký số khi định dạng hỗ trợ

Get-AuthenticodeSignature cung cấp thông tin chữ ký Authenticode trên Windows. Với bộ cài có chữ ký, có thể xem thêm:

Get-AuthenticodeSignature -LiteralPath 'C:\Downloads\installer.exe' |
    Select-Object Status, StatusMessage,
        @{Name='Signer'; Expression={$_.SignerCertificate.Subject}}

Đối chiếu nhà ký với nhà phát hành mong đợi, không chỉ nhìn trạng thái Valid. File không ký không tự động đồng nghĩa mã độc; chữ ký hợp lệ cũng không bảo đảm chương trình an toàn tuyệt đối. Khi trạng thái không rõ hoặc không đúng kỳ vọng, dừng và xác minh qua kênh chính thức.

6. Lưu bằng chứng kiểm tra

Trong nhóm IT, nên ghi tên file, phiên bản, URL nguồn, ngày tải, thuật toán, hash tham chiếu và kết quả kiểm tra vào phiếu thay đổi. Không lưu mật khẩu hay token trong hồ sơ. Giữ file ở vị trí được kiểm soát, tránh xác minh một bản rồi vô tình triển khai bản khác.

Quy trình ngắn gọn là: xác minh nguồn, tải đúng bản, so hash, kiểm tra chữ ký nếu có, rồi mới tiếp tục quy trình cài đặt được phê duyệt. Giá trị của SHA-256 nằm ở một phép đối chiếu có nguồn tham chiếu đáng tin cậy, không phải chỉ ở việc tạo ra chuỗi ký tự dài.

Thảo luận

Bình luận 0

Đăng nhập để bình luận

Bạn cần có tài khoản để tham gia thảo luận và trả lời độc giả khác.

Đăng nhậpĐăng ký

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.