Hashing Algorithms Explained: SHA-1, SHA-256, SHA-512

May 27, 20266 min read

What Is Hashing?

A hash function takes any input — a word, a file, or a terabyte of data — and produces a fixed-length string of characters called a hash digest. The same input always generates the same output. Change one character, and the entire hash changes.

Hashing is one-way. You cannot reconstruct the original data from the hash. That property makes hashing essential for data integrity, password storage, and digital signatures.

Key Properties of Cryptographic Hash Functions

  • Deterministic: Same input always produces the same output
  • Fixed output size: SHA-256 always produces 256 bits, regardless of input size
  • Avalanche effect: A tiny change in input causes a completely different hash
  • Irreversible: Computationally infeasible to derive input from output
  • Collision resistant: Extremely unlikely for two different inputs to produce the same hash

The SHA Family

The Secure Hash Algorithm (SHA) family is the most widely used set of cryptographic hash functions, published by NIST. All three versions covered here follow the same Merkle-Damgård construction but differ in output size and internal processing.

SHA-1

  • Output: 160 bits (40 hex characters)
  • Block size: 512 bits
  • Status: Deprecated for security use since 2017

SHA-1 was the standard for over a decade. In 2017, Google and CWI Amsterdam demonstrated a practical collision attack (SHAttered), proving that two different PDF files could produce the same SHA-1 hash. This broke the核心 collision resistance property.

// SHA-1 example (Node.js)
const crypto = require('crypto');
const hash = crypto.createHash('sha1').update('hello world').digest('hex');
console.log(hash);
// Output: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Verdict: Do not use SHA-1 for any security-sensitive application. It remains useful only for legacy compatibility and non-security checksums.

SHA-256

  • Output: 256 bits (64 hex characters)
  • Block size: 512 bits
  • Status: Current standard, widely trusted

SHA-256 is part of the SHA-2 family and is the default choice for most applications today. It powers TLS certificates, blockchain networks (Bitcoin), code signing, and software integrity checks.

// SHA-256 example (Node.js)
const crypto = require('crypto');
const hash = crypto.createHash('sha256').update('hello world').digest('hex');
console.log(hash);
// Output: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Verdict: The best general-purpose hash for most use cases in 2026.

SHA-512

  • Output: 512 bits (128 hex characters)
  • Block size: 1024 bits
  • Status: Secure, useful for 64-bit platforms

SHA-512 operates on 1024-bit blocks and uses 80 rounds of processing. On 64-bit processors, SHA-512 can actually be faster than SHA-256 because it processes more data per block. Its longer output provides a larger security margin against future attacks.

// SHA-512 example (Node.js)
const crypto = require('crypto');
const hash = crypto.createHash('sha512').update('hello world').digest('hex');
console.log(hash);
// Output: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f...

Verdict: Use when you need maximum security margin or work primarily on 64-bit systems.

Head-to-Head Comparison

PropertySHA-1SHA-256SHA-512
Output length160 bits256 bits512 bits
Hex characters4064128
Block size512 bits512 bits1024 bits
Rounds806480
Collision attacksBroken (2017)None practicalNone practical
Speed (64-bit)FastModerateFast
Security level0 bits128 bits256 bits
Best forLegacy onlyGeneral useHigh-security

Understanding Collision Resistance

A collision occurs when two different inputs produce the same hash. Collision resistance means finding such pairs should be computationally infeasible.

The birthday paradox sets the theoretical bound: for an n-bit hash, a collision can be found in approximately 2^(n/2) operations. This means:

  • SHA-1 (160 bits): Security level reduced to ~2^61 after attacks — practical
  • SHA-256 (256 bits): Security level ~2^128 — no practical attack
  • SHA-512 (512 bits): Security level ~2^256 — no practical attack

Why Collisions Matter

If an attacker can create two documents with the same hash, they can:

  • Forge digital signatures
  • Replace signed software with malicious versions
  • Undermine certificate authority trust chains

This is why SHA-1 deprecation in TLS and code signing was urgent after the SHAttered attack.

Security Recommendations for 2026

DO

  • Use SHA-256 as your default hash function
  • Prefer SHA-512 for long-term archiving or high-value signatures
  • Always combine hashing with salt for password storage
  • Use HMAC when you need message authentication
  • Verify hashes when downloading software or transferring files

DO NOT

  • Use SHA-1 for any security purpose
  • Store passwords with plain SHA-256 — use Argon2id or bcrypt instead
  • Assume hash equality means file equality without considering collision risk
  • Truncate hash output without understanding the security implications

Practical Hashing Use Cases

File integrity verification: Download a file and compare its hash to the published value. Any difference means the file was corrupted or tampered with.

Git commit identifiers: Git uses SHA-1 (migrating to SHA-256) to identify every commit, tree, and blob. The hash uniquely represents the entire content and history.

Blockchain: Bitcoin uses double SHA-256 for block hashing and transaction verification. Ethereum uses Keccak-256 (SHA-3 family).

Digital signatures: Sign the hash of a document rather than the document itself. This keeps signatures compact regardless of document size.

Try It Yourself

Curious how different inputs produce different hashes? Our free Hash Calculator lets you compute SHA-1, SHA-256, and SHA-512 hashes instantly in your browser. No data leaves your device — all calculations run locally using the Web Crypto API.

Test it now: change a single letter in your input and watch the entire hash transform. That is the avalanche effect in action.

Calculate hashes now →