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.1.3 选择扩展运算E
选择扩展运算将右边的32bit数据扩展成48bit数据,具体规律如表2-4所示。
表2-4 选择扩展运算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.1.4 加密运算
加密过程是将扩展运算得到的48bit数据与子密钥产生器输出的48bit子密钥逐位模2相加,输出仍为48bit。
2.1.5 选择压缩运算S
它将来自加密运算的48bit数据自左到右分为8组,每组6bit。然后并行送入8个S盒,每个S盒都是一个非线性变换网络,输出4bit数据,如图2-5所示。
其中,每个S盒将6bit的输入经过代换输出4bit数据。以S1盒为例,说明其中的代换方法。
设S1盒的输入矢量为:x0,x1,x2,x3,x4,x5,输出矢量为y0,y1,y2,y3,,它是16种可能的取值之一。S1盒的代换表(矩阵)如表2-5所示。
表2-5 S1盒代换表
列行 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
为了确定S1盒的输出,DES标准规定将输入矢量中的首尾2bit看成是控制S1盒中的行号(0,1,2,3),而将其余的4bit用来确定列号(0,1,2,•••,15)。这样,每组输入就可以唯一确定表中的一个数据,表中数据为0~15,可以用4bit表示并输出。 基于VHDL语言的DES加密算法设计(5):http://www.youerw.com/zidonghua/lunwen_6115.html