0

enter image description hereI'm learning about Feistel Ciphers at the moment, but having issues with the formulae, so I can't move on from it.

Encryption:

  1. $_{+1} = _$
  2. $_{+1} = _ \oplus ( _ , _)$

For the round function $( _ , _)$, could someone advise on what exactly I need to do? Let's say my key is $1197$, what needs to happen in between the brackets, $(_ , _)$ , full diagram screenshot attached, thanks.enter image description here

terodee
  • 13
  • 3

2 Answers2

1

I guess it makes more sense if you write the two equations like this (referring to the nice diagram in Wikipedia): $$L_{i+1}=R_i,\; R_{i+1}=L_i\oplus F_{K_i}(R_i).$$ In each round, the round function $F$ takes as input the corresponding round key $K_i$ and the previous round's right output, then computes the output value, which is then XORed with the previous round's left output. $F$ is usually modeled as a pseudorandom function and has many instantiations (see here for a list of Feistel ciphers, of which each specifies its own $F$ instantiation and key schedule). This post discusses the requirements/goals for good $F$ instantiations.

Shan Chen
  • 2,755
  • 1
  • 13
  • 19
1

Function $F(x)$ should be function with pseudo-random output (if you change 1 bit in input there should be a chance to change half of output bits). There is no need to use a bijection, because in schema we do not need $F^{-1}(x)$.

Idea behind a Feistel Network is to use some function to hide bits of input behind pseudo-random outputs (but predictable).

ventaquil
  • 111
  • 5