**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