위의 동작 그림을 기반으로 Feistel Cipher의 동작 방식을 설명하겠습니다. Block Cipher 기반의 암호화 방식이기 때문에, Feistel Cipher 또한 암호화 되어야 하는 Plain Text를 여러개의 Block 으로 나누고, Block 하나와 키를 Encryption Algorithm에 Input 합니다. 이때 한 Block의 길이를 2w bits, key를 K, 진행되는 round의 횟수(Number of rounds)를 n 이라고 하겠습니다. 위의 그림은 n=16 일 때입니다. n은 몇이든 가능합니다.
Encryption Algorithm에 들어온 2w bits의 Plain Text Block은 1w bits 두 개로 나누어, 왼쪽과 오른쪽을 각각 $$ LE_{0} \quad RE_{1} $$ 라고 이름을 붙이겠습니다. 이 두 조각은 n 번의 rounds를 거치고, 합쳐지며 Cipher Text Block을 생성하게 됩니다. i(1~)번째 라운드의 입력값은 아래와 같습니다. $$ LE_{i-1} \quad RE_{i-1} \quad SubKey\,K_{i}\,derived\,from\,the\,over\,all\,K $$ 여기서 Subkey는 K, 그리고 다른 Subkey들과는 모두 서로 다릅니다.
모든 라운드는 같은 구조/로직을 가지고 있습니다. Substitution(치환)은 LE 에서 수행되는데, 이는 RE에 round function F를 돌리고 그 결과를 LE와 XOR(Exclusive-OR) 연산을 통해서 수행됩니다. 여기서 사용되는 round fuction F는 매 라운드마다 같지만, round subkey K를 사용하기 때문에 결과가 같지 않습니다. 즉, 아래와 같은 수식으로 표현이 가능합니다. $$ F(RE_{i}\leftarrow\,w\,bits, K_{i+1}) \, =>\, output\leftarrow\,w\,bits $$