Government Security
Network Security Resources

Jump to content

Photo

Algorithms Explained

encryption algorithm cipher tutorial
  • Please log in to reply
No replies to this topic

#1 Blake

Blake

    Former Commander In Chief

  • Retired Admin
  • 7,334 posts

Posted 17 August 2003 - 08:48 PM

Algorithms Explained
By SLy FoX


@@@@@@@@@@@@@ @ @ @

@ @ @ @

@@@@@@@@@@@@ @ @ @

@ @ @

@@@@@@@@@@@@ @@@@@@@@ @

@@@@@@@@@

@

@ @@@@@@ ^ ^

@@@@@@ @ @ $ $

@ @ @ $

@ @@@@@@ $ $ TicO2oo1



Another tutorial by the SLy FoX.If u have any questions u can ask me at (no flames) TicO2oo1@the-pentagon.com.

If u have to always click on the right arrow button at he bottom of your page because the tutorial keeps going of the page,and u find this time wasting u can click on edit and then WORD WRAP and your problem will be solved>



ENjoY



___________________________________________________



Algorithms Explained

___________________________________________________



Encryption has become a part and parcel of our lives and we have accepted the fact that data is going to encrypted and decrypted at various stages. However, there is not a single encryption algorithm followed everywhere. There are a number of algorithms existing, and I feel there is a need to understand how they work. So this text explains a number of popular encryption algorithms and makes you look at them as mathematical formulas.



Data Encryption Standard or DES



The U.S government in 1977 adopted the Data Encryption Standard (DES) algorithm. According to its developer the DES algorithm is:



It is a block cipher system which transforms 64-bit data blocks under a 56-bit secret key under a 56-bit secret key, by means of permutation and substitution.



Now, this tutorial will guide you through the various steps of the DES encryption algorithm making you more confident in dealing with DES encryption.



The following is a step by step guide to the DES algorithm, which was originally written by Matthew Fischer and has been edited by me-:



1.) Firstly, we need to process the key.



1.1 Get a 64-bit key from the user. (Every 8th bit is considered a parity bit. For a key to have correct parity, each byte should contain an odd number of "1" bits.)



1.2 Calculate the key schedule.



1.2.1 Perform the following permutation on the 64-bit key. (The parity bits are discarded, reducing the key to 56 bits. Bit 1 of the permuted block is bit 57 of the original key, bit 2 is bit 49, and so on with bit

56 being bit 4 of the original key.)



Permuted Choice 1 (PC-1)



57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 61 53 45 37 29

21 13 5 28 20 12 4



1.2.2 Split the permuted key into two halves. The first 28 bits are called C[0] and the last 28 bits are called D[0].



1.2.3 Calculate the 16 subkeys. Start with i = 1.



1.2.3.1 Perform one or two circular left shifts on both C[i-1] and D[i-1] to get C[i] and D[i], respectively. The number of shifts per iteration are given in the table below.



Iteration # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Left Shifts 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1



1.2.3.2 Permute the concatenation C[i]D[i] as indicated below. This will yield K[i], which is 48 bits long.



Permuted Choice 2 (PC-2)



14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32



1.2.3.3 Loop back to 1.2.3.1 until K[16] has been calculated.



2 Process a 64-bit data block.



2.1 Get a 64-bit data block. If the block is shorter than 64 bits, it should be padded as appropriate for the application.



2.2 Perform the following permutation on the data block.



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



2.3 Split the block into two halves. The first 32 bits are called L[0], and the last 32 bits are called R[0].



2.4 Apply the 16 subkeys to the data block. Start with i = 1.



2.4.1 Expand the 32-bit R[i-1] into 48 bits according to the bit-selection function below.



Expansion (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



2.4.2 Exclusive-or E(R[i-1]) with K[i].



2.4.3 Break E(R[i-1]) xor K[i] into eight 6-bit blocks. Bits 1-6 are B[1], bits 7-12 are B[2], and so on with bits 43-48 being B[8].



2.4.4 Substitute the values found in the S-boxes for all B[j]. Start with j = 1. All values in the S-boxes should be considered 4 bits wide.



2.4.4.1 Take the 1st and 6th bits of B[j] together as a 2-bit value (call it m) indicating the row in S[j] to look in for the substitution.



2.4.4.2 Take the 2nd through 5th bits of B[j] together as a 4-bit value (call it n) indicating the column in S[j] to find the substitution.



2.4.4.3 Replace B[j] with S[j][m][n].



Substitution Box 1 (S[1])



14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13



S[2]



15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9



S[3]



10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8

13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7

1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12



S[4]



7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15

13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9

10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4

3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14



S[5]



2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9

14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6

4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14

11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3



S[6]



12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11

10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6

4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13





Also tagged with one or more of these keywords: encryption, algorithm, cipher, tutorial