# Difference between revisions of "Cryptographic algorithm Blowfish"

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:

## 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.