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

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. May 19, 2016 at 13:37
• Yup I know. ;) But it didn't match the Present diagram from iacr.org/authors/tikz
– Biv
May 19, 2016 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! May 19, 2016 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? May 20, 2016 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, 2016 at 9:04

From Wikipedia:

Although a Feistel network that uses S-boxes (such as DES) is quite similar to SP networks, there are some differences that make either this or that more applicable in certain situations. For a given amount of confusion and diffusion, an SP network has more "inherent parallelism"1 and so — given a CPU with many execution units — can be computed faster than a Feistel network.[2] CPUs with few execution units — such as most smart cards — cannot take advantage of this inherent parallelism. Also SP ciphers require S-boxes to be invertible (to perform decryption); Feistel inner functions have no such restriction and can be constructed as one-way functions.

• What are your "[1]" and "[2]", did you forgot to cite references? Sep 21, 2020 at 7:54
• What's the point of you making a verbatim copy of Wikipedia and other wikis if many people could already access them? Sep 21, 2020 at 7:56
• Hi, it appears that you copied this answer from Wikipedia. You're using someone else's work without giving the author credit. This amounts to plagiarism, and is not welcome on Cryptography Stack Exchange. Remember to always add prominent attribution when using other sources. Thanks! (this comment relates to a previous revision of this answer) Sep 21, 2020 at 9:04
• For those stalking my recent activities, I didn't visit Wikipedia to know where the text come from, my search engine turned up the content of its mirroring sites. Sep 21, 2020 at 9:15