I am trying to understand how an unbalanced Feistel network works. I came across this image: enter image description here

It says that the function takes $b$ bits to $y$ bits. Which works on the first step, however clearly doesn't on the next one. What am I not getting? If you always apply the function to the side with $b$ bits would that break the cypher? I am guessing it does.

  • $\begingroup$ The image is misleading. It is still taking b bits. You can get it from $b$ msb. $\endgroup$ – kelalaka Jun 18 '20 at 16:54
  • $\begingroup$ @kelalaka what does "$b$ msb" mean exactly? $\endgroup$ – yolo expectz Jun 18 '20 at 16:56
  • 1
    $\begingroup$ $b$ Most Significant Bits. $\endgroup$ – kelalaka Jun 18 '20 at 16:57
  • $\begingroup$ @kelalaka and do these bits become a prefix or a suffix to the $y$ bits? $\endgroup$ – yolo expectz Jun 18 '20 at 17:03

Let formalize it

  • Round function $R:\{0,1\}^b \to \{0,1\}^y$ (This is bad naming, $F$ was better here as in DES)

  • Input to each round is $b+y$ bit register/array $I$.

  • Output of each round $O = (R(\texttt{MSB}(b,I)) \oplus \texttt{LSB}(y,I)) \mathbin\| \texttt{MSB}(b,I)$

Therefore $O$ is again $b+y$ bits register/array as an input to next round.

  • $\texttt{MSB}(b,I)$ the Most Significant $b$ Bits of register $I$.
  • $\texttt{LSB}(y,I)$ the Least Significant $y$ Bits of register $I$.


Let $I=\texttt{[0,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1]}$ be 16-bit register then

  • $\texttt{MSB}(3,I) = \texttt{[0,1,1]}$, and
  • $\texttt{LSB}(12,I) = \texttt{[1,0,1,0,0,1,0,0,1,1,0,0,1]}$

Note that here we used binary representation for $I$, not the array repsentation.


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.