What is a Hash Function?
A hash function takes any input — a single character or a 10GB file — and produces a fixed-length output called a hash or digest. SHA-256 always produces exactly 256 bits (64 hexadecimal characters), regardless of input size.
Key properties of cryptographic hash functions:
Deterministic — the same input always produces the same hash. "hello" always hashes to the same SHA-256 value.
One-way — you cannot reverse a hash to get the original input. You can verify an input produces a specific hash, but you cannot reconstruct the input from the hash.
Avalanche effect — changing even a single character in the input produces a completely different hash. "hello" and "Hello" produce totally unrelated hashes.
Collision resistant — it is computationally infeasible to find two different inputs that produce the same hash. With SHA-256, the probability of a collision is astronomically small.
These properties make hash functions perfect for verifying data integrity without storing the original data.
SHA-1 vs SHA-256 vs SHA-512
The SHA family (Secure Hash Algorithm) was developed by the US National Security Agency (NSA).
SHA-1 (160-bit output) was the standard from 1995 to 2017. It has been broken — researchers demonstrated collision attacks in 2017. Google's Project Zero found two different PDF files with identical SHA-1 hashes. SHA-1 should never be used for security purposes today.
SHA-256 (256-bit output) is part of the SHA-2 family and is the current industry standard. It is used in TLS/SSL certificates, digital signatures, Bitcoin, and most modern security applications. No practical attacks have been demonstrated against SHA-256.
SHA-512 (512-bit output) provides higher security but at a performance cost. It is useful for applications requiring very high security margins, such as long-term document signing.
For most applications, SHA-256 is the right choice — strong enough for all practical purposes and faster than SHA-512 on 32-bit systems.
Real-World Applications of SHA-256
SHA-256 is everywhere in modern computing:
File integrity verification — software publishers provide the SHA-256 hash of their downloads. After downloading, you compute the hash yourself. If it matches, the file is authentic and unmodified. This is how you verify that a downloaded file was not tampered with or corrupted.
HTTPS / TLS certificates — SHA-256 is the standard signing algorithm for SSL/TLS certificates that secure every HTTPS website.
Git version control — Git uses SHA-1 (currently migrating to SHA-256) to identify every commit, file and directory in a repository. Each commit hash is a fingerprint of the entire state of the code.
Bitcoin and blockchain — Bitcoin uses SHA-256 twice (SHA-256d) to create block hashes. Mining is the process of finding an input that produces a hash with a specific number of leading zeros.
Password storage — websites store SHA-256 hashes of passwords instead of the passwords themselves. When you log in, your password is hashed and compared to the stored hash.
API authentication — many APIs use HMAC-SHA256 (Hash-based Message Authentication Code) to sign API requests, preventing tampering.
When NOT to Use Plain SHA-256 for Passwords
This is critical: do not use plain SHA-256 to hash user passwords.
The problem: SHA-256 is designed to be fast. On modern GPUs, attackers can compute billions of SHA-256 hashes per second. This makes brute-force attacks on leaked password hashes feasible.
The solution for passwords: use bcrypt, scrypt, or Argon2. These are intentionally slow password hashing functions. Argon2 might take 100 milliseconds to hash a password — that is fine for a login check, but makes brute-force attacks impractical (billions of guesses would take years).
Use SHA-256 for: file integrity, digital signatures, API authentication, data fingerprinting. Use bcrypt/Argon2 for: storing user passwords.
Never store passwords in plain text. Never use MD5 or SHA-1 for passwords. Use Argon2 (recommended) or bcrypt for all password hashing in 2026.