Blowfish Cipher Tutorials - Herong's Tutorial Examples - v2.03, by Herong Yang
Efficient Form of the Blowfish Algorithm
A more efficient form of the Blowfish Algorithm is presented with the 16-round loop expanded inline to avoid the 'Swap' step.
If you look at the Blowfish process again, you will see that the performance can be improved if the 16-round loop is expanded inline to avoid the "Swap xL and xR" step.
Here is a more efficient form of the Blowfish algorithm without loop as mentioned in the BlowfishJ implementation developed by Markus Hahn, http://come.to/hahn:
Input: T: 64 bits of clear text P1, P2, ..., P18: 18 sub-keys F(): Round function Output: C: 64 bits of cipher text Algorithm - Blowfish Encryption: C = Blowfish(T), Blowfish round process without loop defined as: (L, R) = T, dividing T into two 32-bit parts L = L XOR P1 R = R XOR F(L) XOR P2 L = L XOR F(R) XOR P3 R = R XOR F(L) XOR P4 L = L XOR F(R) XOR P5 R = R XOR F(L) XOR P6 L = L XOR F(R) XOR P7 R = R XOR F(L) XOR P8 L = L XOR F(R) XOR P9 R = R XOR F(L) XOR P10 L = L XOR F(R) XOR P11 R = R XOR F(L) XOR P12 L = L XOR F(R) XOR P13 R = R XOR F(L) XOR P14 L = L XOR F(R) XOR P15 R = R XOR F(L) XOR P16 L = L XOR F(R) XOR P17 R = R XOR P18 C = (R, L), combine R and L into 64-bit block
As you can see, the "Swap L and R" step is no longer needed.
Table of Contents
Blowfish Cipher Encryption Algorithm
Key Schedule (Sub-Keys and S-Boxes) Algorithm
►Efficient Form of the Blowfish Algorithm
Blowfish Cipher Decryption Algorithm
Proof of Blowfish Cipher Algorithm
First 8336 Fractional Hex Digits of PI
piqpr8.c - Generating Hex Digits of PI
OpenSSL "enc -bf-ecb" for Blowfish/ECB Encryption
OpenSSL "enc -bf-cbc" for Blowfish/CBC Encryption
OpenSSL "enc -bf-cfb" for Blowfish/CFB Encryption
OpenSSL "enc -bf-ofb" for Blowfish/OFB Encryption