Calculate checksums for any file using hash algorithms — secure, fast, client-side, and educational
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 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:
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]
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]
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]
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.
NIST defines three essential properties for secure hash functions:
[NIST CSRC, Collision Resistance]
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]
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]
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]
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]
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]
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.