Explain Blowfish Algorithm
1 Answer

Blowfish Algorithm

  • Blowfish was developed by Bruce Schneier. It is very strong symmetric key cryptographic algorithm.

Features of Blowfish:

  • Fast: Blowfish encryption state on 32 bit microprocessors.

  • Compact: Blowfish can execute in less than 5KB memory

  • Simple: Blowfish uses only primitive operations such as addition, XOR and table lookup making its design and manipulation simple

  • Secure: Blowfish has a variable key length up to a maximum of 448 long, making it both flexible and secure

Operations: (Blowfish encrypts 64-bit block with a variable-length key)

1) Subkey Generation: This process covert the key up to 448 bit long to subkeys totaling 7168 bits

2) Data Encryption : This process involves the iteration of a simple function 16 times. Each round contains a key-dependent permutation and key and data substitution

  • Blowfish is a very fast algorithm which takes 64 bit input as plaintext and generates 64 bit output ciphertext

  • It uses the concept of P-array which uses 32 bit subkeys and there are 18 P-arrays $P_1 \ to \ P_{18}$

  • Blowfish Algorithm runs 16 times i.e. 16 rounds


  1. Subkey Generation:
  • Key Size is variable but blowfish algorithm generates very large sub-keys . The key size is in the range of 32 bits to 448 bits or 14 words.

  • Concept of P-array consists of 18, 32 bit sub-keys

  • There are 4 S-boxes containing 256 entries of 32 bits

  • P-array is initialized first then four s boxes with fixed string

  • Then P-arryas are XORed with subkeys ie from $P_1 \ to \ P_{18}$ . Once the sub keys are generated the encryption process begins.

  1. Data encryption and decryption:
  • We use the P arrays and S boxes during this process

Algorithm for encryption of 64 bit block

  1. Divide X into two blocks XL and XR of equal sizes. Thus both XL and XR will consist of 32 bit each

  2. For i=1 to 16

$\hspace{1.5cm}$XL = XL ⊕ $P_i$

$\hspace{1.5cm}$XR = f(XL) ⊕ XR

$\hspace{1.5cm}$Swap XL ,XR

$\hspace{1.5cm}$(undo last swap)

  1. XR = XR ⊕ $P_{17}$

  2. XL = XL ⊕ $P_{18}$

  3. Concatenate XL and XR back into X to get ciphertext CT

    enter image description here

Function f is as follows

$\hspace{1.5cm}$a. Divide the 32 bit XL block into four 8 bit sub blocks named a, b, c, d

$\hspace{1.5cm}$b. Compute f(a,b,c,d) = $((S_1[a ] + S_2[b] mod 2^{32}) ⊕ S_3[c])⊕ S_4 [d] mod 2^{32}$

Blowfish Decryption

enter image description here

Please log in to add an answer.