Key Generation In Des Algorithm

Let's move on to the DES subkey generation, which takes a 56 bit key and then outputs 16 subkeys, each of which are 48 bits long. The diagram illustrates how the subkey generation works. PC blocks stand for permuted choice, and is a permutation and a compression.

  • Cryptography Tutorial
  • Cryptography Useful Resources
  • Selected Reading

The speed of exhaustive key searches against DES after 1990 began to cause discomfort amongst users of DES. However, users did not want to replace DES as it takes an enormous amount of time and money to change encryption algorithms that are widely adopted and embedded in large security architectures.

The pragmatic approach was not to abandon the DES completely, but to change the manner in which DES is used. This led to the modified schemes of Triple DES (sometimes known as 3DES).

Incidentally, there are two variants of Triple DES known as 3-key Triple DES (3TDES) and 2-key Triple DES (2TDES).

3-KEY Triple DES

Before using 3TDES, user first generate and distribute a 3TDES key K, which consists of three different DES keys K1, K2 and K3. This means that the actual 3TDES key has length 3×56 = 168 bits. The encryption scheme is illustrated as follows −

The encryption-decryption process is as follows −

  • Encrypt the plaintext blocks using single DES with key K1.

  • Now decrypt the output of step 1 using single DES with key K2.

  • Finally, encrypt the output of step 2 using single DES with key K3.

  • The output of step 3 is the ciphertext.

  • Decryption of a ciphertext is a reverse process. User first decrypt using K3, then encrypt with K2, and finally decrypt with K1.

Due to this design of Triple DES as an encrypt–decrypt–encrypt process, it is possible to use a 3TDES (hardware) implementation for single DES by setting K1, K2, and K3 to be the same value. This provides backwards compatibility with DES.

Second variant of Triple DES (2TDES) is identical to 3TDES except that K3is replaced by K1. In other words, user encrypt plaintext blocks with key K1, then decrypt with key K2, and finally encrypt with K1 again. Therefore, 2TDES has a key length of 112 bits.

Triple DES systems are significantly more secure than single DES, but these are clearly a much slower process than encryption using single DES.

Basic but pure DES implementation in PythonI have written it for fun because nothing else.

How it works ?

Everything is made within a class called 'des'. This class can be instanciated once and used to cipher and decipher multiple datas.It also support padding using the PKCS5 specification. (So the data is padding even if it is multiple of 8 to be sure that the last byte il be padding data).The generation of all the keys used is made in the method generatekeys and substitute apply the SBOX permutation.The main method is run which is called by both encrypt and decrypt but in a different mode. This method do basically all the stuff, it loopthrought all the blocks and for each do the 16th rounds.

Be careful: This module implement DES in ECB mode, so you can't make it weaker. I didn't made it to be strong but for fun.

How to use it ?


I have not done any interface to take argument in command line so this module can't be used as a script. (feel free to modify it).To use it from python shell or in another module do:

Note: In this exemple no padding is specified so you have to provide a text which is multiple of 8 bytes. The key is cut to 8 bytes if longer.

Key Generation In Des Algorithm 2016

To use padding: