小盒子的小盒

DES加密算法小结2

0
阅读(1636)

在1.2.3 步中形成了48 位的right 值,

需要把48 位的right 值转换成32 位的right 值.把right 视为由8 个6 位二进制块组成,
a,b….h 都是6 位,强制转换成10 进制整数的值都不大于64 ,a,b…h 转成10 进制整数后,在
对应的表中根据转换后整数值取得对应位置的替代值,
a 对应表7.1
b 对应表7.2
c 对应表7.3
d 对应表7.4
e 对应表7.5
f 对应表7.6
g 对应表7.7
h 对应表7.8
比如:
a = 32 ,那么到表7.1 中找到32 的位置,把对应的替代值0x8 赋给a;
d = 53 ,那么到表7.4 中找到的位置,把对应的替代值 0x3 赋给d
g = 16, 那么到表7.7 中找到16 的位置,把对应的替代值0xa 赋给g;
每6 位用一个4 位替换这样就完成了从48 位向32 位数据的转换.
有些资料中介绍6 位转4 位的实现方法与本文所采用的不同,但殊途同归,最终的结果是相同
的.
1.2.5 数据换位
表8Pc3[32]
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
把1.2.4 步形成的32 位right
根据表8 进行转换:
数据的原第16 位换到第一位,原第7 位换到第二位,...,依此类推,最后得到新的32 位数据.
1.2.6 交换数据
把right 和left 按位异或后的值赋给right,然后将本轮输入的原始right 值赋给left.
1.2.7 迭代
DES 算法需要进行16 次迭代,在完成16 次迭代前,把第i-1 次得到的的left 和right 的值作
为第i 次的输入数据,重复1.2.3~1.2.6 的步骤,但是有一点要记住:在步骤1.2.3 中第i 次迭
代要选择第i 次迭代生成的密钥与数据进行按位异或.
1.2.8 数据整理  Pc4[64]
表9
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
为保证加密和解密的对称性,DES 算法的前15 次迭代每完成一次迭代都要交换left 和right
的值,第16 次迭代不交换两者的数值. 到此把32 位的left 和right 合并成64 位的Data
根据表9 重新调整Data 的位值
数据的原第40 位换到第一位,原第8 位换到第二位,...,依此类推,最后的得到新的64 位.
Data 即为密文.
1.3 数据的解密
数据解密的算法与加密算法相同,区别在于1.2.3 步中和数据进行按位异或的密钥的使用顺序
不同,在加密中是按照第i 次迭代就采用第i 次迭代生成的密钥进行异或,而解密时第i 次迭代
就采用第17-i 次迭代生成的密钥和数据进行异或.