2013级集成电路EDA设计与实践
16 1 2 7 20 21 29 12 28 17 5 18 31 10 3 4 9 25 15 23 26 8 24 14 32 27 6 22 11 19 13 30
把3.4步形成的32位right
根据表8进行转换:
数据的原第16位换到第一位,原第7位换到第二位,...,依此类推,最后得到新的32位数据.
其具体代码如下:
b_v(1 to 4):=b_s(16)&b_s(7)&b_s(20)&b_s(21); b_v(5 to 8):=b_s(29)&b_s(12)&b_s(28)&b_s(17); b_v(9 to 12):=b_s(1)&b_s(15)&b_s(23)&b_s(26); b_v(13 to 16):=b_s(5)&b_s(18)&b_s(31)&b_s(10); b_v(17 to 20):=b_s(2)&b_s(8)&b_s(24)&b_s(14); b_v(21 to 24):=b_s(32)&b_s(27)&b_s(3)&b_s(9); b_v(25 to 28):=b_s(19)&b_s(13)&b_s(30)&b_s(6); b_v(29 to 32):=b_s(22)&b_s(11)&b_s(4)&b_s(25); fout<=b_v;
3.6 交换数据
把right 和left按位异或后的值赋给right,然后将本轮输入的原始right值赋给left. rout<=Lin xor f_s; lout<=rin;
26
2013级集成电路EDA设计与实践
3.7 迭代
DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的
的left和right的值作为第i次的输入数据,重复3.3~3.6的步骤,但是有一点要记住:在步骤3.3中第i次迭代要选择第i次迭代生成的密钥与数据进行按位异或.
图3.1 DES算法的一轮迭代处理过程
3.8 数据整理
表9
40 8 48 39 7 47 38 6 46 37 5 45 36 4 44 35 3 43 34 2 42 16 15 14 13 12 11 10 56 55 54 53 52 51 50 24 23 22 21 20 19 18 64 63 62 61 60 59 58 32 31 30 29 28 27 26 27
2013级集成电路EDA设计与实践
33 1 41 9 49 17 57 25 为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和right的值,第16次迭代不交换两者的数值. 到此把32位的left和right合并成64位的Data
根据表9重新调整Data的位值。数据的原第40位换到第一位,原第8位换到第二位,...,依此类推,最后的得到新的64位.
Data即为密文。 其具体代码如下:
t(1 to 8)<=a(40)&a(8)&a(48)&a(16)&a(56)&a(24)&a(64)&a(32); t(9 to 16)<=a(39)&a(7)&a(47)&a(15)&a(55)&a(23)&a(63)&a(31); t(17 to 24)<=a(38)&a(6)&a(46)&a(14)&a(54)&a(22)&a(62)&a(30); t(25 to 32)<=a(37)&a(5)&a(45)&a(13)&a(53)&a(21)&a(61)&a(29); t(33 to 40)<=a(36)&a(4)&a(44)&a(12)&a(52)&a(20)&a(60)&a(28); t(41 to 48)<=a(35)&a(3)&a(43)&a(11)&a(51)&a(19)&a(59)&a(27); t(49 to 56)<=a(34)&a(2)&a(42)&a(10)&a(50)&a(18)&a(58)&a(26); t(57 to 64)<=a(33)&a(1)&a(41)&a(9)&A(49)&a(17)&a(57)&a(25);
3.9 本章小结
本章对数据进行加密处理,经过初始换位,数据扩展,数据压缩,数
据换位,交换数据,迭代,数据整体等一系列步骤,将明文加密为密文。
28
2013级集成电路EDA设计与实践
第四章 仿真结果及分析
利用QuartusⅡ自带的仿真器,输入激励为10ns周期(CLK),输入加密数据0(64位二进制),密匙0(56位二进制),仿真结果如图4-1所示。
图4-1基于QuartusⅡ的时序仿真
从第1个数据块开始加密起,经16轮次的延时后,每一轮次延时都会有一个数据块编码完成输出一个密文块。一个轮次延时就是一个时钟周期,即每个时钟周期得到一个密文块。但完整的16轮DES加密数据块还是要等到第16个时钟才输出。可以验证,非第16个时钟输出的加密数据块并不符合有关参考值。
通过波形,可以看到第16轮的加密结果(一个数据完整的DES加密在第16轮完成):
KEY_IN:0000000000000000 DIN_IN:0000000000000000 DOUT:8CA64DE9C1B123A7
结果表明本文设计的DES加密系统的加密功能是正确可靠的。
29
2013级集成电路EDA设计与实践
第五章 结论
本文首先了解了
DES加密系统的背景及其意义。其次,深入理解了DES
的基本概念,特点及原理。在其基础上,采用VHDL语言具体描述加密的过程。主要包括两个方面,有密钥的产生和数据的加密。其中,密钥的产生由取得密钥,等分密钥,密钥移位,密钥选取,迭代等步骤构成。数据的加密由取得数据,初始换位,数据扩展,数据压缩,数据换位,交换数据, 数据整理等步骤构成。最后,采用Quartus ||开发工具对编写的硬件描述语言VHDL进行仿真分析,分析结果显示,当输入的加密数据为0(64位二进制),密钥为0(56位二进制)时,其输出结果为8CA64DE9C1B123A7。因此,本文设计的DES加密系统的加密功能是正确可靠的。
30