Cipher - DES Algorithm
Part:
1
2
3
4
(Continued from previous part...)
DES algorithm:
Input:
T: 64 bits of clear text
k1, k2, ..., k16: 16 round keys
IP: Initial permutation
FP: Final permutation
f(): Round function
Output:
C: 64 bits of cipher text
Algorithm:
T' = IP(T), applying initial permutation
(L0, R0) = T', dividing T' into two 32-bit parts
(L1, R1) = (R0, L0 ^ f(R0, k1))
(L2, R2) = (R1, L1 ^ f(R1, k2))
......
C' = (R16, L16), swapping the two parts
C = FP(C'), applying final permutation
where ^ is the XOR operation.
The round function f(R,k) is defined as:
Input:
R: 32-bit input data
k: 48-bit round key
E: Expansion permutation
P: Round permutation
s(): S boxes function
Output
R' = f(R,k): 32-bit output data
Algorithm
X = E(R), applying expansion permutation and returning 48-bit data
X' = X ^ k, XOR with the round key
X" = s(X'), applying S boxes function and returning 32-bit data
R' = P(X"), applying the round permutation
The S boxes function s(X) is defined as:
Input:
X: 48-bit input data
S1, S2, ..., S8: 8 S boxes - 4 x 16 tables
Output:
X' = s(X): 32-bit output data
Algorithm:
(X1, X2, ..., X8) = X, dividing X into 8 6-bit parts
X' = (S1(X1), S2(X2), ..., S8(X8))
where Si(Xi) is the value at row r and column c of S box i with
r = 2*b1 + b6
c = 8*b2 + 4*b3 + 2*b3 + b4
b1, b2, b3, b4, b5, b6 are the 6 bits of the Xi
DES cipher algorithm supporting tables:
Initial Permutation - IP:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Final Permutation - FP:
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Expansion permutation - E:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Round permutation - P:
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
(Continued on next part...)
Part:
1
2
3
4
|