Return

File Checksum Tool

Calculate checksums for any file using hash algorithms — secure, fast, client-side, and educational

No files selected
Checksum Results
Select files to calculate their checksums

Early Error Detection (1940s-1960s)

The concept of adding redundant bits to detect transmission errors dates to the early days of digital communication. Simple parity checking, which is to say, adding a single bit to make the total number of 1s even or odd, was the earliest and simplest method, capable of detecting single-bit errors but failing when an even number of bits were corrupted.

In 1961, W. Wesley Peterson published a paper introducing Cyclic Redundancy Check (CRC), a polynomial-based error detection method that remains widely used today. CRC proved far more powerful than simple parity, detecting burst errors and complex corruption patterns. [Wikipedia,CRC]

The Birth of Cryptographic Hash Functions (1990s)

The need for secure, one-way hash functions grew with digital signatures and data integrity requirements. The Secure Hash Algorithm (SHA) family was designed by the U.S. National Security Agency (NSA) and published by NIST:

  • 1993: SHA-0 released (quickly withdrawn due to flaws)
  • 1995: SHA-1 released, widely adopted in TLS, SSH, IPsec, and Git
  • 2001: SHA-2 family introduced (SHA-224, SHA-256, SHA-384, SHA-512), are still considered secure today
  • 2015: SHA-3 finalized after a public competition (using Keccak permutation-based design)

NIST deprecated SHA-1 in 2011 and formally disallowed its use for digital signatures after 2013. In February 2017, researchers from Google and CWI Amsterdam demonstrated the first real-world SHA-1 collision attack, dubbed "SHAttered," proving two different PDF files could produce the same SHA-1 hash. [NIST, Transitioning Away from SHA-1]

Checksums for Speed (1995)

In 1995, Mark Adler, while working at NASA's Jet Propulsion Laboratory, developed the Adler-32 checksum as part of the zlib compression library. A modification of Fletcher's checksum, Adler-32 prioritized speed over cryptographic security, using prime modulus arithmetic to improve reliability. [Wikipedia, Adler-32] [Wikipedia,Mark Adler]

The Basic Principle: Redundancy

All checksums and hashes rely on redundancy, that is to say, adding extra bits to a message that establish mathematical relationships among the original bits. The sender calculates a checksum from the data and appends it. The receiver performs the same calculation; if the results don't match, an error is detected. [Wikipedia, Checksum]

One-Way Functions & The Avalanche Effect

Cryptographic hash functions are one-way functions, meaning they are easy to compute in one direction but computationally infeasible to reverse. Given a hash output, finding an input that produces it (a preimage) should be practically impossible. [NIST CSRC, Hash Functions]

A critical property is the avalanche effect: changing a single bit in the input changes approximately 50 percent of the output hash bits, making patterns impossible to predict.

Three Core Security Properties

NIST defines three essential properties for secure hash functions:

  • Collision Resistance: Computationally infeasible to find two different inputs with the same hash
  • Preimage Resistance: Given a hash value, infeasible to find any input that produces it
  • Second Preimage Resistance: Given a specific input, infeasible to find a second, different input with the same hash

[NIST CSRC, Collision Resistance]

Error Detection vs. Cryptographic Security

Non-cryptographic checksums (CRC-32, Adler-32) detect accidental corruption from noise or hardware faults but provide no security against intentional tampering. Cryptographic hashes (SHA-256) are designed to resist deliberate attacks. [Wikipedia, CRC vs Cryptographic Hash]

SHA-256 / SHA-512 (Secure Hash Algorithm 2)

Output Size: 256 bits (SHA-256) / 512 bits (SHA-512) | Security Status: Secure / Widely Used

Designed by NSA and published by NIST in 2001. SHA-256 is used in Bitcoin, TLS certificates, password hashing, and blockchain technology. SHA-512 offers higher security for 64-bit architectures. No practical attacks exist as of 2026. Processes approximately 139 MB/s (SHA-256) and 154 MB/s (SHA-512) on modern hardware. [Wikipedia, SHA-2]

SHA-1 (Secure Hash Algorithm 1)

Output Size: 160 bits | Security Status: Deprecated / Insecure

Released 1995, widely used in Git, TLS, and digital certificates through early 2010s. In February 2017, CWI Amsterdam and Google demonstrated the first practical collision attack ("SHAttered"), proving two different PDF files could produce the same SHA-1 hash. NIST officially deprecated SHA-1 in 2011 and disallowed its use for digital signatures after 2013. Should not be used for security purposes. [SHAttered Attack] [NIST, SHA-1 Deprecation]

CRC-32 (Cyclic Redundancy Check)

Output Size: 32 bits | Security Status: Error detection only (no security)

Invented by W. Wesley Peterson in 1961. The 32-bit CRC-32-IEEE 802.3 variant became the standard implementation used in PNG, ZIP, Gzip, MPEG-2, and countless network protocols. Treats data as a polynomial and performs polynomial division using XOR operations. Can detect all single-bit errors, all two-bit errors, any odd number of errors, and burst errors up to 32 bits. [Wikipedia, CRC]

Adler-32

Output Size: 32 bits | Created: 1995 by Mark Adler | Security Status: Not cryptographically secure

Developed by Mark Adler as part of the zlib compression library while he worked at NASA's Jet Propulsion Laboratory. Adler also co-authored gzip and contributed to the PNG image format. Computes two 16-bit sums modulo the prime number 65,521. Sum A is the sum of all bytes (plus 1). Sum B is the running sum of A values. Uses a prime modulus (unlike Fletcher's composite modulus), enabling detection of certain byte-pair differences that Fletcher misses. Used in zlib compression, PNG image chunks, and rsync's rolling checksum variant. [Wikipedia, Adler-32]

Simple Hash (32-bit)

Output Size: 32 bits | Type: Non-cryptographic / Educational | Security Status: None

This is a basic 32-bit hash function included for educational and comparative purposes. Unlike CRC-32's polynomial division or Adler-32's modulus sums, this simple hash applies elementary bit operations (XOR, addition, shift) to generate a 32-bit fingerprint. Extremely fast, suitable for hash tables, non-critical checksums, or learning how hash functions work. Not suitable for any security application or error detection where data integrity matters.