Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

a.) Describe the high level steps involved for decryption using a Feistel cipher

ID: 3794637 • Letter: A

Question

a.) Describe the high level steps involved for decryption using a Feistel cipher.

b.) Modify the pseudo code provided below that describe encryption using a Feistel network to do decryption. You need to actually rewrite the code. Use different font colors and comments to highlight the areas of the code you have changed.

c) What are some benefit(s) of a Feistel structure?

Literal # Number of Encryption rounds MaxRound-16 EndLiteral BitRange LeftBits= 0, 31 RightBits-32, 63 # Total block is 64 bits wide. Left side is bits 0-31 # right side are bits 32-63 EndBitRange # Size of Plain Text is 64 bits # Set subkey value to the 1st round # The key [n] represents the sub-key derived from TempText=PlainText the key while n = IntermediateValue n=n+ 1 one #After last round there should not be any swapping of the # data block halves. Therefore undo the last swap done in # the while loop CipherText = TempText CipherText = IntermediateValue

Explanation / Answer

The decryption algorithm in Feistel cipher is same as encryption algorithm. In encryption

algorithm , input is plain text and a key. The plain text is divided into two halves L0 and R0.

These two halves of data pass through n rounds of processing and then combine to

processing cipher text block. Generally Feistel encryption algorithm goes through 16 rounds.

All rounds are similar. Each round j has inputs Lj--1 and Rj-1 derived from previous round and sub

key Kj derived from K. A Substitution is performed on left half of data by applying round function F

to right half of data and taking EX-OR of output of that function and the left half of data. This round

function is same for all round except round sub key Kj . After this substitution, a permutation is

performed in which both halves of data are interchanged. In last round of encryption process , the

two halves of data are swapped.

For explanation we use LEj and REj for data going through encryption algorithm and LDj and RDj for

decryption. The main reason of correctness of this algorithm is that output of jth encryption round i.e.

LEj and REj is input to the(16-j) th decryption round

The main steps involve for decryption in Feistel cipher are

1. After performing EX-OR operation in each round of decryption ,a swapping is performed

between two halves of data. After last EX-OR operation in last round a swapping is

performed such that RE16 || LE16 will be cipher text which is input to decryption algorithm.

2. During first step of decryption LD1 =RD0 = LE16=RE15 and RD1= EX-OR(LD0 , F(RD0,K16))

= EX-OR(RE16 , F(RD15,K16))

= EX-OR(EX-OR(LE15 , F(RE15,K16)) , F(RD0,K16))

= LE15