How do you build a cipher that scrambles thoroughly yet reverses PERFECTLY? Split the block in half. Each round, run one half through a messy function and XOR it into the other, then swap. The magic: because XOR is its own inverse and you kept one half untouched, you can run the exact same steps BACKWARDS to decrypt — even if the messy function itself can’t be inverted. It’s the skeleton of DES and many block ciphers. Slide through the rounds and back.
A Feistel network builds an invertible block cipher from an arbitrary (even non-invertible) round function F. Split the block into halves (L,R); each round sets L′=R, R′=L⊕F(R,Kᵢ). Because XOR is self-inverse and one half passes through untouched, DECRYPTION runs the same structure with the round keys reversed — recovering the plaintext exactly, no matter what F is. This lets designers make F as nonlinear/confusing as they like for security while guaranteeing reversibility; enough rounds give the confusion + diffusion a cipher needs. It is the skeleton of DES, Blowfish, and many block ciphers. A fail-loud self-check throws unless decrypt(encrypt(m))=m for a non-invertible F. ◆ real cryptography, node-verified.
The illustration uses a toy 8-bit F and 4 rounds; real ciphers use wide blocks, strong key schedules, and enough rounds to resist differential/linear cryptanalysis. The Feistel invertibility (for ANY F) is exact.