# What is the diffrence between Feistel networks and SPN?

I recently read about the concept of Feistel Networks and Substitution Permutation Networks but what is exactly the difference between the two ?

## 1 Answer

In a Feistel networks (from the German IBM cryptographer Horst Feistel), the input is divided into two blocks ($L_0$ and $R_0$) which interact with each other. Main example is DES.

basic construction:

In a SPN (Substitution Permutation Network), the input is divided into multiple small blocks, applied to a S-box (substitution), then the bits positions are mixed (permutation). The key addition may occur before or after these two operations.

Present block cipher:

• Funfact: You usually start with and end with a key operation in an SPN as otherwise this round is trivially reversable. – SEJPM May 19 '16 at 13:37
• Yup I know. ;) But it didn't match the Present diagram from iacr.org/authors/tikz – Biv May 19 '16 at 13:38
• thanks! this realy helped me, you see i watched a video lately where they explained DES with the feistel network, but then they showed how the function in the feistel network worked (which really looked like a spn network) so that why i was confused with the diffrence between them, anyway thanks for helping! – blacklight May 19 '16 at 13:43
• I have an OT question: In the common descryption of Feistel ciphers there are exchanges of L and R on the successive steps. But that could apparently be avoided by a suitable re-formulation of the algorithm which IMHO would be better for understanding. Could I be right in that? – Mok-Kong Shen May 20 '16 at 8:53
• @Mok-KongShen You mean something like this or this ? While it seem easier to implement (because you consider a big round function as 2 iteration of the usual round function : L -> R ; R -> L). The usual representation is better in a traditional sense as it is the one you are likely to find in books, explanations etc. So yes, easier to implement, but not a standard representation. – Biv May 20 '16 at 9:04