Input: A plaintext block of 2w bits and a key K.
Split the plaintext into two w-bit blocks: L0,R0.
After n rounds, combine the blocks to produce the ciphertext block.
Every round has the same structure.
Takes 64 bits of plaintext and produces a 64-bit block.
The bits are rearranged using a table, with the inverse table applied at the end.
For example, if the first table entry is 58, the first output bit comes from input bit 58.
This corresponds to the first and final stages of DES and provides additional scrambling of the data.
Table E, the expansion permutation, converts a 32-bit input into a 48-bit output.
The first output bit comes from the kth input bit indicated by the table.
Table P converts a 32-bit input into a 32-bit output.
The first output bit comes from the kth input bit indicated by the table.
The expansion permutation converts 32 bits to 48 bits so they can be XORed with the subkey.
The permutation table rearranges the S-box results to create a more complex data structure.
After XOR, the expanded 48-bit data is passed into eight S-boxes.
Each S-box converts six input bits to four output bits: {0,1}6→{0,1}4.
a1a2a3a4a5a6→a1a6:row,a2a3a4a5:col
Rows and columns start at 0.
Converting the selected table value back to binary gives the four-bit output.
Permutation Choice 1 (PC-1) transforms the 56-bit key K into C0,D0, each containing 28 bits.
These provide the basis for generating subkeys in later stages.
The DES key K contains 64 bits, but eight are parity bits, leaving 56 bits in use.
Parity bits serve to detect errors.
Use Ci−1,Di−1 to generate Ci,Di.
Shift Ci,Di left according to the shift amount defined for the round.
Permutation Choice 2 (PC-2) rearranges the shifted Ci,Di into a 48-bit subkey.
For example, the subkey's first bit comes from the kth bit of C and D specified in the table.
Every part is linear except the S-boxes.
The encryption key is short: 56 bits makes it vulnerable to brute-force attacks.
It is no longer used and has been replaced by AES.
Applies encryption three times to strengthen DES.
Enc(K=(K1,K2,K3),M)=Enc(K=K3,Dec(K=K2,Enc(K=K1,M)))Dec(K=(K1,K2,K3),C)=Dec(K=K1,Enc(K=K2,Dec(K=K3,C)))