Blowfish Cipher Decryption Algorithm

The Blowfish cipher decryption algorithm is presented. It is identical to the encryption algorithm, except that Sub-keys, P1, P2, ..., P18, are applied in reverse order.

The decryption algorithm of a block cipher is usually identical to encryption algorithm step by step in reverse order. But for the Blowfish cipher, the encryption algorithm is so well designed, that the decryption algorithm is identical to the encryption algorithm step by step in the same order, only with the sub-keys applied in the reverse order.

Here is the Blowfish decryption algorithm with the 16-round loop expanded inline:

```Input:
CC: 64 bits of ciphertext
P1, P2, ..., P18: 18 sub-keys
F(): Round function

Output:
TT: 64 bits of plaintext

Algorithm - Blowfish Decryption:
(LL, RR) = CC, dividing CC into two 32-bit parts
LL = LL XOR P18
RR = RR XOR F(LL) XOR P17
LL = LL XOR F(RR) XOR P16
RR = RR XOR F(LL) XOR P15
LL = LL XOR F(RR) XOR P14
RR = RR XOR F(LL) XOR P13
LL = LL XOR F(RR) XOR P12
RR = RR XOR F(LL) XOR P11
LL = LL XOR F(RR) XOR P10
RR = RR XOR F(LL) XOR P9
LL = LL XOR F(RR) XOR P8
RR = RR XOR F(LL) XOR P7
LL = LL XOR F(RR) XOR P6
RR = RR XOR F(LL) XOR P5
LL = LL XOR F(RR) XOR P4
RR = RR XOR F(LL) XOR P3
LL = LL XOR F(RR) XOR P2
RR = RR XOR P1
TT = (RR, LL), combine RR and LL into 64-bit block
```

As you can see, the decryption algorithm is indeed identical to the encryption algorithm, except Sub-keys, P1, P2, ..., P18, are applied in reverse order.