Cryptographic algorithm Blowfish
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:
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.
- Bruce Schneier. Applied Cryptography. Protocols, Algorithms and Source Code in C.