Generate cryptographic hashes using various algorithms.
A cryptographic hash function is a mathematical algorithm that converts data of any size into a fixed-size string of characters, typically represented in hexadecimal format. Hash functions are fundamental to modern cybersecurity, providing the backbone for password storage, digital signatures, and data integrity verification.
Hash functions are one-way functions, meaning you cannot reverse-engineer the original data from its hash. This property makes them ideal for storing sensitive information like passwords—instead of storing the actual password, systems store its hash and compare hashes during authentication.
Output Size: 128 bits (32 hexadecimal characters)
Speed: Very fast
Security Status: Deprecated for security use
MD5 was developed in 1991 by Ronald Rivest. While once widely used, MD5 is now considered cryptographically broken due to collision vulnerabilities discovered in 2004. Attackers can create two different inputs that produce the same hash (a collision).
Current Use Cases: File checksums for non-security purposes, legacy system compatibility, quick data comparison.
Output Size: 160 bits (40 hexadecimal characters)
Speed: Fast
Security Status: Deprecated
SHA-1 was designed by the NSA and published in 1995. In 2017, Google demonstrated the first practical SHA-1 collision attack (SHAttered). Major browsers and certificate authorities have deprecated SHA-1 for SSL certificates.
Current Use Cases: Git commit identification (though transitioning to SHA-256), legacy systems.
Output Size: 256 bits (64 hexadecimal characters)
Speed: Moderate
Security Status: Recommended
SHA-256 is part of the SHA-2 family, designed by the NSA and published in 2001. It's the most widely used secure hash algorithm today, employed in Bitcoin mining, SSL certificates, and countless security applications.
Current Use Cases: Password hashing (with salting), SSL/TLS certificates, Bitcoin and blockchain, digital signatures, file integrity verification.
Output Size: 384 bits (96 hexadecimal characters)
Speed: Moderate
Security Status: Secure
SHA-384 is a truncated version of SHA-512, providing 192-bit security. It's often used in government and financial applications requiring high security margins.
Current Use Cases: Government communications, high-security applications, TLS handshakes.
Output Size: 512 bits (128 hexadecimal characters)
Speed: Faster than SHA-256 on 64-bit systems
Security Status: Highly Secure
SHA-512 offers the highest security level in the SHA-2 family. Interestingly, it can be faster than SHA-256 on 64-bit processors due to its internal design optimized for 64-bit operations.
Current Use Cases: High-security password storage, cryptographic applications, digital forensics.
Modern systems never store passwords in plain text. Instead, they store the hash of the password. When you log in, the system hashes your input and compares it to the stored hash. For added security, passwords should be hashed with a salt (random data) to prevent rainbow table attacks.
When downloading files, websites often provide checksums (hash values). You can hash the downloaded file and compare it to the provided checksum to verify the file wasn't corrupted or tampered with during transfer.
Hash functions are essential to digital signatures. Instead of signing an entire document (which would be slow), the system hashes the document and signs the hash. The recipient can verify the signature by hashing the document themselves and comparing.
Bitcoin and other cryptocurrencies rely heavily on SHA-256. Each block contains the hash of the previous block, creating an immutable chain. Mining involves finding a hash that meets specific criteria (proof of work).
| Property | Description |
|---|---|
| Deterministic | The same input always produces the same hash output |
| Fast Computation | Computing the hash should be quick for any given input |
| Pre-image Resistance | Given a hash, it should be infeasible to find the original input |
| Collision Resistance | It should be infeasible to find two different inputs with the same hash |
| Avalanche Effect | A small change in input should produce a completely different hash |
| Algorithm | Bits | Chars |
|---|---|---|
| MD5 | 128 | 32 |
| SHA-1 | 160 | 40 |
| SHA-256 | 256 | 64 |
| SHA-384 | 384 | 96 |
| SHA-512 | 512 | 128 |
Never use MD5 or SHA-1 for security-critical applications like password hashing or digital signatures. These algorithms have known vulnerabilities.