Main Page | See live article

Feistel cipher

A Feistel cipher is a block cipher with a particular structure (known as a Feistel network). As cryptographers have performed much analysis of this structure and the strengths and weaknesses it produces, many--but by no means all--modern block ciphers are Feistel ciphers. DES is one of the earliest and best known such cipher.

Split the plaintext block into two equal pieces, (L0, R0)

For each round i =1,2,...,n, compute

    Li = Ri-1
    Ri = Li-1 ⊕ f(Ri-1, Ki)

where f is the round function and Ki is the sub-key.

Then the ciphertext is (Ln, Rn).

Regardless of the function f, decryption is accomplished via

    Ri-1 = Li
    Li-1 = Ri ⊕ f(Ri-1, Ki)

Unbalanced Feistel ciphers use a modified structure where L0 and R0 are not of equal lengths. The Skipjack encryption algorithm is an example of such a cipher.