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:

enter image description here

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:

enter image description here

| improve this answer | |
  • $\begingroup$ Funfact: You usually start with and end with a key operation in an SPN as otherwise this round is trivially reversable. $\endgroup$ – SEJPM May 19 '16 at 13:37
  • $\begingroup$ Yup I know. ;) But it didn't match the Present diagram from iacr.org/authors/tikz $\endgroup$ – Biv May 19 '16 at 13:38
  • $\begingroup$ 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! $\endgroup$ – blacklight May 19 '16 at 13:43
  • $\begingroup$ 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? $\endgroup$ – Mok-Kong Shen May 20 '16 at 8:53
  • $\begingroup$ @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. $\endgroup$ – Biv May 20 '16 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.

| improve this answer | |
  • $\begingroup$ What are your "[1]" and "[2]", did you forgot to cite references? $\endgroup$ – DannyNiu Sep 21 at 7:54
  • 3
    $\begingroup$ What's the point of you making a verbatim copy of Wikipedia and other wikis if many people could already access them? $\endgroup$ – DannyNiu Sep 21 at 7:56
  • 2
    $\begingroup$ 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) $\endgroup$ – SEJPM Sep 21 at 9:04
  • $\begingroup$ 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. $\endgroup$ – DannyNiu Sep 21 at 9:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.