密码学实验报告-DES
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学应用与实践课程实验报告实验1:实现DES密码体制
2)子密钥的生成
64比特的密钥生成16个48比特的子密钥。其生成过程见图:
3)解密
DES的解密过程和DES的加密过程完全类似,只不过将16圈的子密钥序列K1,K2……K16的顺序倒过来。即第一圈用第16个子密钥K16,第二圈用K15,其余类推。
第一圈:
加密后的结果
L=R15, R=L15⊕f(R15,K16)⊕f(R15,K16)=L15
同理R15=L14⊕f(R14,K15), L15=R14。
同理类推:得 L=R0, R=L0。
3.密钥生成
(1)取得密钥
从用户处取得一个64位(本文如未特指,均指二进制位))长的密码key ,
去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥.
(2)等分密钥
(3)密钥移位
DES算法的密钥是经过16次迭代得到一组密钥的,把在1.1.2步中生成的A,B视为迭代的起始密钥. 比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位. 第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位.
第一次迭代:
A(1) = ǿ(1) A
B(1) = ǿ(1) B
第i次迭代:
A(i) = ǿ(i) A(i-1)
B(i) = ǿ(i) B(i-1)
(4)密钥的选取
在(3)步中第i次迭代生成的两个28位长的密钥为
把合并
按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,...,依此类推,k的最后一位最后一位是56位密钥的第32位。生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:
(5)迭代
DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行(3)(4)步.最终形成16套加密密钥:key[0] , key[1] , key[2] ,…. key[14] , key[15] .
(1)取得数据
把明文数据分成64位的数据块,不够64位的数据块以适当的方式补足。
(2)数据扩展
第一次迭代以上步生成的newData作为输入数据,第i (i > 1)次迭代以第i-1次的64位输出数据为输入数据,把64位数据按位置等分成左右两部分:
保持left不变,
把扩展后的48位right与第i次迭代生成的48位加密密钥进行按位异或操作
形成一个新的48位的right.
(3)数据压缩
在1.2.3步中形成了48位的right值,
需要把48位的right值转换成32位的right值.把right视为由8个6位二进制块组成,
a,b….h都是6位,强制转换成10进制整数的值都不大于64 ,a,b…h转成10进制整数后,在对应的表中根据转换后整数值取得对应位置的替代值, 每6位用一个4位替换这样就完成了从48位向32位数据的转换.
有些资料中介绍6位转4位的实现方法与本文所采用的不同,但殊途同归,最终的结果是相同的。
(4)数据换位
把1.2.4步形成的32位right
根据表8进行转换:数据的原第16位换到第一位,原第7位换到第二位,...,依此类推
,最后得到新的32位数据.
(5)交换数据
把right 和left按位异或后的值赋给right,然后将本轮输入的原始right值赋给left.
(6)迭代
DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的的left和right 的值作为第i次的输入数据,重复1.2.3~1.2.6的步骤,但是有一点要记住:在步骤1.2.3中第i次迭代要选择第i次迭代生成的密钥与数据进行按位异或。
(7)数据整理
为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和right的值,第16次迭代不交换两者的数值. 到此把32位的left和right合并成64位的Data,
数据的原第40位换到第一位,原第8位换到第二位,...,依此类推,最后的得到新的64位.
Data即为密文.
5.数据的解密
数据解密的算法与加密算法相同,区别在于1.2.3步中和数据进行按位异或的密钥的使用顺序不同,在加密中是按照第i次迭代就采用第i次迭代生成的密钥进行异或,而解密时第i 次迭代就采用第17-i次迭代生成的密钥和数据进行异或。
(注:可编辑下载,若有不当之处,请指正,谢谢!)