Feistel Network
A Feistel network is a symmetric structure for block ciphers that splits the input into left and right halves and, each round, modifies one half with the round function F and swaps them; encryption and decryption share the same structure.
Purpose
It lets the round function F be an arbitrary non-bijective mapping while remaining invertible, simplifying design and implementation, and lets encryption and decryption share code.
Mechanism
Each round: L_{i+1} = R_i, R_{i+1} = L_i XOR F(R_i, K_i). Decryption runs the same structure with round keys in reverse order. DES, 3DES, Blowfish, and Twofish are all Feistel ciphers.
Use cases
- DES/3DES structure
- Blowfish/Twofish design
- General block-cipher framework