密码学实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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] .

4.数据的加密操作

(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.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次迭代生成的密钥和数据进行异或。

相关文档
最新文档