PR4 Data Encryption Standard Final
PR4 Data Encryption Standard Final
PRACTICAL NO.4
Theory: Feistel networks were first seen commercially in IBM’s Lucifer cipher designed by Horst Feistel
and Don Coppersmith in 1973. Feistel networks gained respectability when the U.S federal government
adopted the DES (a cipher based on Lucifer. with changes made by the NSA) in 1976. Many modern
symmetric block cipher are based on Feistel Networks. In cryptography a Feistel structure cipher is a
symmetric structure used in the construction of block ciphers named after the German-born physicist and
cryptographer hors Feistel. A large proportion of block ciphers use the scheme including the US Data
encryption standard. It is a design model from which many different ciphers are derived. DES is just one
example of a Feistel cipher. A cryptographic algorithm uses some algorithm for both encryption and
decryption.
E &TC/SEM-VII/C&NS/PR04 Page 1
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
Since DES is based on the Feistel Cipher, all that is required to specify DES is −
● Round function
● Key schedule
● Any additional processing − Initial and final permutation
Round Function
The heart of this cipher is the DES function, f. The DES function applies a 48-bit key to the rightmost 32
bits to produce a 32-bit output.
E &TC/SEM-VII/C&NS/PR04 Page 2
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
● Expansion Permutation Box − Since right input is 32-bit and round key is a 48-bit, we first need
to expand right input to 48 bits. Permutation logic is graphically depicted in the following
illustration −
● The graphically depicted permutation logic is generally described as table in DES specification
illustrated as shown −
● XOR (Whitener). − After the expansion permutation, DES does XOR operation on the expanded
right section and the round key. The round key is used only in this operation.
● Substitution Boxes. − The S-boxes carry out the real mixing (confusion). DES uses 8 S-boxes,
each with a 6-bit input and a 4-bit output. Refer the following illustration −
● There are a total of eight S-box tables. The output of all eight s-boxes is then combined in to 32 bit
section.
E &TC/SEM-VII/C&NS/PR04 Page 3
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
● Straight Permutation − The 32-bit output of S-boxes is then subjected to the straight permutation
with rule shown in the following illustration:
Key Generation
The round-key generator creates sixteen 48-bit keys out of a 56-bit cipher key. The process of key
generation is depicted in the following illustration −
The logic for Parity drop, shifting, and Compression P-box is given in the DES description.
E &TC/SEM-VII/C&NS/PR04 Page 4
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
DES Analysis
The DES satisfies both the desired properties of block cipher. These two properties make cipher very
strong.
● Avalanche effect − A small change in plaintext results in the very great change in the ciphertext.
Program:
#include <bits/stdc++.h>
using namespace std;
string hex2bin(string s)
{
// hexadecimal to binary conversion
unordered_map<char, string> mp;
mp['0'] = "0000";
mp['1'] = "0001";
mp['2'] = "0010";
mp['3'] = "0011";
mp['4'] = "0100";
mp['5'] = "0101";
mp['6'] = "0110";
mp['7'] = "0111";
mp['8'] = "1000";
mp['9'] = "1001";
mp['A'] = "1010";
mp['B'] = "1011";
mp['C'] = "1100";
mp['D'] = "1101";
mp['E'] = "1110";
mp['F'] = "1111";
string bin = "";
for (int i = 0; i < s.size(); i++) {
bin += mp[s[i]];
}
E &TC/SEM-VII/C&NS/PR04 Page 5
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
return bin;
}
string bin2hex(string s)
{
// binary to hexadecimal conversion
unordered_map<string, string> mp;
mp["0000"] = "0";
mp["0001"] = "1";
mp["0010"] = "2";
mp["0011"] = "3";
mp["0100"] = "4";
mp["0101"] = "5";
mp["0110"] = "6";
mp["0111"] = "7";
mp["1000"] = "8";
mp["1001"] = "9";
mp["1010"] = "A";
mp["1011"] = "B";
mp["1100"] = "C";
mp["1101"] = "D";
mp["1110"] = "E";
mp["1111"] = "F";
string hex = "";
for (int i = 0; i < s.length(); i += 4) {
string ch = "";
ch += s[i];
ch += s[i + 1];
ch += s[i + 2];
ch += s[i + 3];
hex += mp[ch];
}
return hex;
}
E &TC/SEM-VII/C&NS/PR04 Page 6
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
E &TC/SEM-VII/C&NS/PR04 Page 7
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
}
}
return ans;
}
string encrypt(string pt, vector<string> rkb, vector<string> rk)
{
// Hexadecimal to binary
pt = hex2bin(pt);
// Splitting
string left = pt.substr(0, 32);
string right = pt.substr(32, 32);
cout << "After splitting: L0=" << bin2hex(left)
<< " R0=" << bin2hex(right) << endl;
E &TC/SEM-VII/C&NS/PR04 Page 8
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
22, 23, 24, 25, 24, 25, 26, 27,
28, 29, 28, 29, 30, 31, 32, 1 };
// S-box Table
int s[8][4][16] = { { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 },
{ 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 },
E &TC/SEM-VII/C&NS/PR04 Page 9
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
{ 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 } };
// S-boxes
string op = "";
for (int i = 0; i < 8; i++) {
int row = 2 * int(x[i * 6] - '0') + int(x[i * 6 + 5] - '0');
int col = 8 * int(x[i * 6 + 1] - '0') + 4 * int(x[i * 6 + 2] - '0') + 2 * int(x[i * 6 + 3] - '0') + int(x[i * 6 +
4] - '0');
int val = s[i][row][col];
op += char(val / 8 + '0');
val = val % 8;
op += char(val / 4 + '0');
val = val % 4;
E &TC/SEM-VII/C&NS/PR04 Page 10
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
op += char(val / 2 + '0');
val = val % 2;
op += char(val + '0');
}
// Straight D-box
op = permute(op, per, 32);
left = x;
// Swapper
if (i != 15) {
swap(left, right);
}
cout << "Round " << i + 1 << " " << bin2hex(left) << " "
<< bin2hex(right) << " " << rk[i] << endl;
}
// Combination
string combine = left + right;
E &TC/SEM-VII/C&NS/PR04 Page 11
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
// Final Permutation
string cipher = bin2hex(permute(combine, final_perm, 64));
return cipher;
}
int main()
{
// pt is plain text
string pt, key;
/*cout<<"Enter plain text(in hexadecimal): ";
cin>>pt;
cout<<"Enter key(in hexadecimal): ";
cin>>key;*/
pt = "123456ABCD132536";
key = "AABB09182736CCDD";
// Key Generation
// Hex to binary
key = hex2bin(key);
E &TC/SEM-VII/C&NS/PR04 Page 12
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
// Number of bit shifts
int shift_table[16] = { 1, 1, 2, 2,
2, 2, 2, 2,
1, 2, 2, 2,
2, 2, 2, 1 };
// Splitting
string left = key.substr(0, 28);
string right = key.substr(28, 28);
// Combining
string combine = left + right;
// Key Compression
string RoundKey = permute(combine, key_comp, 48);
E &TC/SEM-VII/C&NS/PR04 Page 13
Sipna College of Engineering & Technology, Amravati.
Department of Electronics and Telecommunication Engineering
rkb.push_back(RoundKey);
rk.push_back(bin2hex(RoundKey));
}
Conclusion: Thus, we have analyzed DES Algorithm. DES has proven to be a very well-designed block
cipher. There have been no significant cryptanalytic attacks on DES other than exhaustive key search.
E &TC/SEM-VII/C&NS/PR04 Page 14