The Story - Blowfish (1993):
In 1993, Bruce Schneier (one of the most famous names in cryptography) had a problem. DES was aging, and most encryption algorithms were either patented or restricted. He wanted to create something different: a fast, free, unpatented encryption algorithm that anyone could use.
The result was Blowfish. It was revolutionary for its time:
- Fast: Much faster than DES on 32-bit processors
- Flexible: Variable key length (32 to 448 bits)
- Free: Public domain, no patents, no licenses
- Secure: No significant weaknesses found (for most uses)
Blowfish became wildly popular. It was used in password managers, file encryption tools, VPNs, and even some versions of Linux. For over a decade, it was the go-to choice for developers who wanted strong encryption without legal hassles.
The Limitation:
But Blowfish had a weakness: its 64-bit block size. This seems technical, but here's why it matters:
With a 64-bit block, after encrypting about 4GB of data with the same key, patterns start to emerge (the "birthday problem"). For modern applications that encrypt terabytes of data, this is a real issue.
Schneier himself recommended: "Use Blowfish for legacy systems, but for new applications, use Twofish or AES."
Blowfish Technical Details:
Type: Block Cipher (Feistel Network)
Block Size: 64 bits (limitation)
Key Size: 32 to 448 bits (variable)
Rounds: 16
Security Level: Good (but limited by 64-bit blocks)
Usage: bcrypt password hashing, legacy file encryption, some VPNs
Status: Secure but not recommended for new applications
Enter Twofish (1998):
When NIST announced the AES competition in 1997, Bruce Schneier and his team saw an opportunity. They took everything they learned from Blowfish and created Twofish—a worthy successor.
Twofish was one of the five AES finalists (along with Rijndael, Serpent, MARS, and RC6). It didn't win, but it came close. Here's what made it special:
- 128-bit blocks: Fixed the birthday problem
- Flexible key sizes: 128, 192, or 256 bits
- Very fast: Especially on older hardware
- Highly secure: No practical attacks found
- Public domain: Free to use, no patents
Rijndael (AES) won because it was slightly faster and simpler to implement in hardware. But Twofish remains an excellent algorithm.
Twofish Technical Details:
Type: Block Cipher (Feistel Network)
Block Size: 128 bits
Key Size: 128, 192, or 256 bits
Rounds: 16
Security Level: Very High (AES finalist)
Usage: File encryption (TrueCrypt, VeraCrypt), PGP, some VPNs
Status: Secure and recommended (though AES is more common)
Real-World Usage:
Blowfish today:
- bcrypt: The popular password hashing algorithm uses Blowfish internally
- Legacy systems: Many older VPNs and file encryption tools
- OpenSSH: Supported but not recommended
Twofish today:
- VeraCrypt: Popular disk encryption tool (successor to TrueCrypt)
- PGP/GPG: Email encryption
- KeePass: Password manager option
- 7-Zip: File compression with encryption
The Lesson:
Blowfish and Twofish show us that good cryptography doesn't have to be government-designed. Bruce Schneier proved that open, public algorithms can be just as secure (or more secure) than classified ones.
They also teach us about evolution in cryptography. Blowfish was great for its time, but technology advanced. Rather than defending the old algorithm, Schneier created a better one. That's how cryptography should work.
When to use:
- Blowfish: Only for legacy compatibility or bcrypt password hashing
- Twofish: Excellent choice if you want an alternative to AES (especially for disk encryption)
- AES: Still the standard for most applications