Cryptography Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 4.00

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 

Dr. Herong Yang, updated in 2007
Cryptography Tutorials - Herong's Tutorial Notes - Cipher - DES Algorithm