Difference between revisions of "Cryptographic algorithm Blowfish"

From CryptoWiki
Jump to: navigation, search
Line 1: Line 1:
 
'''Blowfish''' – a cryptographic algorithm developed in 1993 by Bruce Schneier.
 
'''Blowfish''' – a cryptographic algorithm developed in 1993 by Bruce Schneier.
 
 
 +
== Description of Blowfish ==
 
Blowfish is a 64-bit block cipher with a variable-length key. The algorithm consists of two parts: key expansion and data encryption.  
 
Blowfish is a 64-bit block cipher with a variable-length key. The algorithm consists of two parts: key expansion and data encryption.  
  
Line 12: Line 13:
  
 
Four 32-bit S-boxes have 256 entries each:
 
Four 32-bit S-boxes have 256 entries each:
 +
 +
[[File:blow1.png]]
 +
 +
[[File:blow2.png]]
 +
 +
 +
== Method of calculating the subkeys ==
 +
 +
The exact method used to calculate these subkeys will be described later in this section.
 +
 +
Blowfish is a Feistel network consisting of 16 rounds. The input is a 64-bit data element, x.
 +
 +
== Bibliography ==
 +
 +
* Bruce Schneier. Applied Cryptography. Protocols, Algorithms and Source Code in C.

Revision as of 16:10, 6 December 2013

Blowfish – a cryptographic algorithm developed in 1993 by Bruce Schneier.

Description of Blowfish

Blowfish is a 64-bit block cipher with a variable-length key. The algorithm consists of two parts: key expansion and data encryption.

Key expansion converts a key of up to 448 bits into several subkey arrays totaling 4168 bytes.

Data encryption consists of a simple function iterated 16 times. Each round consists of a keydependent permutation, and a key- and data-dependent substitution. All operations are additions and XORs on 32-bit words. The only additional operations are four indexed array data lookups per round.

Blowfish uses a large number of subkeys. These keys must be precomputed before any data encryption or decryption.

The P-array consists of 18 32-bit subkeys: P1, P2, … , P18.

Four 32-bit S-boxes have 256 entries each:

Blow1.png

Blow2.png


Method of calculating the subkeys

The exact method used to calculate these subkeys will be described later in this section.

Blowfish is a Feistel network consisting of 16 rounds. The input is a 64-bit data element, x.

Bibliography

  • Bruce Schneier. Applied Cryptography. Protocols, Algorithms and Source Code in C.