DES supplementary material


This article details the various tables referenced in the Data Encryption Standard block cipher.
All bits and bytes are arranged in big endian order in this document. That is, bit number 1 is always the most significant bit.

Initial permutation (IP)

585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157

This table specifies the input permutation on a 64-bit block. The meaning is as follows: the first bit of the output is taken from the 58th bit of the input; the second bit from the 50th bit, and so on, with the last bit of the output taken from the 7th bit of the input.
This information is presented as a table for ease of presentation; it is a vector, not a matrix.

Final permutation (IP−1)

408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725

The final permutation is the inverse of the initial permutation; the table is interpreted similarly.

Expansion function (E)

3212345
456789
8910111213
121314151617
161718192021
202122232425
242526272829
28293031321

The expansion function is interpreted as for the initial and final permutations. Note that some bits from the input are duplicated at the output; e.g. the fifth bit of the input is duplicated in both the sixth and eighth bit of the output. Thus, the 32-bit half-block is expanded to 48 bits.

Permutation (P)

167202129122817
11523265183110
282414322739
19133062211425

The P permutation shuffles the bits of a 32-bit half-block.

Permuted choice 1 (PC-1)


The "Left" and "Right" halves of the table show which bits from the input key form the left and right sections of the key schedule state. Note that only 56 bits of the 64 bits of the input are selected; the remaining eight were specified for use as parity bits.

Permuted choice 2 (PC-2)

1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932

This permutation selects the 48-bit subkey for each round from the 56-bit key-schedule state. This permutation will ignore 8 bits below:
Permuted Choice 2 "PC-2" Ignored bits 9,18,22,25,35,38,43,54.

Substitution boxes (S-boxes)

This table lists the eight S-boxes used in DES. Each S-box replaces a 6-bit input with a 4-bit output. Given a 6-bit input, the 4-bit output is found by selecting the row using the outer two bits, and the column using the inner four bits. For example, an input "011011" has outer bits "01" and inner bits "1101"; noting that the first row is "00" and the first column is "0000", the corresponding output for S-box S5 would be "1001", the value in the second row, 14th column..

Key Generation

The main key supplied from user is of 64 bits. The following operations are performed with it.

Drop Parity bits

Drop the bits of the grey positions to make 56 bit space for further operation for each round.
12345678
910111213141516
1718192021222324
2526272829303132
3334353637383940
4142434445464748
4950515253545556
5758596061626364

After that bits are permuted according to the following table,
The table is row major way, means,
Actual Bit position = Substitute with the bit of row * 8 + column.
12345678
157494133251791
2585042342618102
3595143352719113
46052443663554739
5312315762544638
6302214661534537
729211352820124

Bits Rotation

Before the round sub-key is selected, each half of the key schedule state is rotated left by a number of places. This table specifies the number of places rotated.
• The key is divided into two 28-bit parts
• Each part is shifted left one or two bits
• After shifting, two parts are then combined to form a 56 bit temp-key again
Number of Round12345678910111213141516
Number of Left rotations1122222212222221

Key Compression

• The compression P-box changes the 56 bits key to 48 bits key, which is used as a key for the corresponding round.
The table is row major way, means,
Actual Bit position = Substitute with the bit of row * 8 + column.
12345678
11417112401050328
21506211023191204
32608160727201302
44152313747553040
55145334844493956
63453464250362932

After this return the Round-Key of 48 bits to the called function, i.e. the Round.
OWIKI.org. Text is available under the Creative Commons Attribution-ShareAlike License.