All articles
Security• 6 min read•

Checksums explained: verifying downloads with SHA-256

Somewhere between a project's download mirror and your disk, files go astray: truncated transfers, stale caches, corrupted writes, occasionally deliberate tampering. Publishers anticipate this and publish a checksum — a short fingerprint computed from the file's exact bytes. Comparing your copy against theirs takes under a minute and converts hope into evidence. Yet the ritual confuses newcomers because it borrows vocabulary from cryptography without explaining it: hashes, collisions, signatures, digests. This article untangles the terms, explains why the algorithm name on the checksum page matters, walks through verification that keeps your file entirely on your own machine, and covers what to do when the fingerprints refuse to match.

What a hash actually is

A cryptographic hash digests arbitrary input into a fixed-length fingerprint: SHA-256 always emits 64 hexadecimal characters whether fed a haiku or a four-gigabyte operating system image. Three properties earn it this job. Determinism: identical bytes always produce identical output, so a faithful copy reproduces the published digest exactly. Avalanche: changing even one character of input scrambles roughly half of the output characters, which means a corrupted or edited file cannot resemble the original digest by coincidence — change a single letter inside a text document and every region of the fingerprint shifts unpredictably. One-wayness: fingerprints cannot be reversed back into the original file, which is why publishing one reveals nothing about the content it describes. Together these properties reduce an impossible task — comparing billions of bytes by hand — to comparing two short strings.

Reading the fingerprint itself

Checksums are conventionally written as lowercase hexadecimal, though uppercase appears regularly and comparison should ignore case entirely. The length encodes the algorithm: 32 hex characters means MD5, 40 means SHA-1, and 64 signals SHA-256 — a useful sanity check before you hash anything, because hashing with the wrong algorithm guarantees a mismatch no matter how clean the download. Whitespace and line wrapping in published digests are cosmetic; strip them before comparing. Some publishers ship signed checksum files rather than bare strings, in which case verifying the signature first protects you from a tampered checksum page pointing at tampered files.

Verifying a download, step by step

The ritual barely varies across platforms, and each step exists for a reason:

  • Download the file normally and leave it untouched — renaming is harmless, editing is not.
  • Fetch the publisher's official checksum from their own website, ideally over HTTPS.
  • Hash your local copy with a generator or command utility, selecting the same algorithm the publisher used.
  • Compare character by character rather than by glance; one differing hex digit means mismatch.
  • On mismatch, re-download once before panicking — interrupted transfers cause the overwhelming majority of failures.

Why SHA-256 became the default

Algorithm choice matters because older fingerprints have been forged in practice. In February 2017, researchers at Google and CWI Amsterdam announced SHAttered: the first practical collision against SHA-1, demonstrating two structurally different PDF files that share a single digest. A collision breaks the core guarantee that a fingerprint uniquely identifies content, opening the door to crafted-substitution attacks wherever systems still place faith in old digests — a malicious party can prepare two documents in advance, get the harmless one signed or published, then swap in its evil twin with an identical fingerprint. The industry responded by migrating to SHA-256, which possesses no practical collisions and an output space large enough that birthday surprises remain firmly theoretical. Anything published today should ship SHA-256 fingerprints; a publisher offering nothing better is a hygiene warning worth heeding.

MD5: legacy convenience, not security

MD5 fell earlier and harder. Practical collision techniques emerged in the mid-2000s, and by 2012 the Flame malware had famously abused an MD5 collision to forge a Microsoft code-signing certificate. Legacy systems still emit MD5 digests, sometimes alongside proper ones, and package repositories carry decades of inertia. Read an MD5-only checksum as weak evidence: considerably better than nothing against accidental corruption, and close to useless against deliberate tampering, since forging a colliding file is a solved problem with published tooling. Prefer SHA-256 whenever the publisher offers it — reputable projects universally do now — and reserve MD5 comparisons for detecting download hiccups, nothing more.

A hash is not encryption, and not a signature

Terminology tangles badly here, so untangle it deliberately. Hashing is one-way fingerprinting with no key involved: nothing is encrypted, and nothing decrypts. Encryption is reversible scrambling gated by a key, protecting confidentiality rather than proving integrity. A digital signature layers authorship on top of hashing: the publisher signs the hash with a private key, and anyone holding the corresponding public key confirms both that the file is intact and who endorsed it. Publisher checksum pages ordinarily provide bare hashes, which certify integrity alone — the file matches what the site posted, whoever controls that site. Knowing precisely which artifact you hold tells you which threat it covers, and equally which threats it ignores.

When a legitimate checksum differs

Occasionally your honest computation disagrees with the posted value, and sabotage is not the explanation. Line-ending translation is the classic culprit: moving a text file through a channel that rewrites carriage returns alters bytes, and therefore the digest. Repackaged archives, distribution-specific rebuilds and adjacent point releases also produce legitimately different fingerprints — always confirm the checksum corresponds to the exact filename and version you downloaded. The pragmatic rule: binaries and archives should match exactly; if any text-mode transfer touched the file, redo the download in binary mode before drawing conclusions about attackers.

Compare locally, ship nothing

Verification tools divide into upload-based services and local generators. Uploading a sensitive disk image to a stranger's hashing service quietly undermines the exercise; browser-based generators compute digests locally through the Web Crypto API and transmit nothing across the network. Paste the published fingerprint into the comparison field, hash your file in place, compare, done — the bytes never leave your machine, and the whole ceremony costs less time than the download itself did. For anything containing personal data, proprietary material, or sheer gigabytes, local comparison is not merely more pleasant. It is the correct default — large uploads take as long as the verification they were meant to simplify, and once the habit forms, verifying every download becomes effortless.

Try the tools from this article

Free, no sign-up, and everything runs inside your browser — nothing is uploaded.