How to Verify File Integrity
Use cryptographic hashes to verify that a file has not been corrupted or tampered with.
Problem
You downloaded a large file and want to confirm it is identical to the original, with no corruption or modification.
Prerequisites
- Understanding of hash functions
- Ability to run a hashing tool
Steps
-
1. Obtain the expected hash
Download the official hash value from a trusted source, typically published alongside the file on the official website. The hash is usually SHA-256 or SHA-512. Verify that the hash itself comes from a trusted channel (HTTPS, signed page).
Inputofficial SHA-256: a1b2c3...Outputexpected hash recorded -
2. Compute the hash of your file
Run a SHA-256 hash tool on the downloaded file. The tool reads the file and produces a 64-character hex digest. Even a single bit change in the file produces a completely different hash.
Inputdownloaded-file.isoOutputcomputed: a1b2c3... -
3. Compare the hashes
Compare the computed hash with the expected hash. If they match exactly, the file is intact. If they differ, the file is corrupted or tampered with; delete it and re-download. Use a constant-time comparison in code to avoid timing attacks.
Inputexpected: a1b2... | computed: a1b2...OutputMATCH ✓
Expected result
Confirmation that the downloaded file is byte-for-byte identical to the original.
Common errors
- Comparing only part of the hash
- Compare the entire hash string. A partial comparison can miss differences in the unchecked portion.
- Getting the hash from the same server as the file
- If the server is compromised, both the file and the hash could be tampered. Get the hash from an independent trusted source or a signed release.
Troubleshooting
- If hashes differ, re-download the file. If they still differ, the source may be corrupted.
- Use SHA-256 or stronger; MD5 and SHA-1 are broken for integrity against intentional tampering.
Security limits
- Hash verification detects accidental corruption and non-targeted tampering. For adversarial tamper detection, the hash must come from a trusted independent source.
- All hashing is local.
Related tools
Related glossary
Related tasks
Ready to run it?