2013级集成电路EDA设计与实践
when \ when \ when \ when \ when \ when \ when \
when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when others => null; end case;
3.5 数据换位
表8
25
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
相关推荐: