
实验六、数据加密标准DES
实验目的:
1. 熟练掌握数据加密标准DES的算法原理及实现;
2. 掌握DES的子密钥的产生原理及其实现。
实验内容:
1、写出DES的子密钥的产生算法及其实现。在此假定(1)密钥k的长度为2mbit;(2)所有位直接进行置换,不进行选择,子密钥的长度仍为2mbit;(3)过程中移位都是进行右移1位。
2、当m=8时,写出下列密钥的前3个子密钥:
(1)1111 1111 1111 1111
(2)0000 0000 0000 0000
(3)1111 0000 1111 0000
(4)1010 1010 1010 1010
(5)1101 0001 1111 0011
实验结果:
1.DES的运算可分为如下三步:
(1) 对输入分组进行固定的“初始置换”IP,可写为(L0,R0)=IP(输入分组),其中L0和R0称为“(左,右)半分组”,都是32比特的分组,IP是公开的固定的函数,无明显的密码意义。
(2) 将下面的运算迭代16轮(i=1,2,…,16):Li=Ri-1 ,Ri-1=Li-1f(Ri-1,ki);这里ki称为轮密钥,是56比特输入密钥的一个48比特字串,f称为S盒函数(S表示交换),是一个代换密码,目的是获得很大程度的信息扩散。
(3) 将十六轮迭代后得到的结果(L16 ,R16)输入到IP的逆置换来消除初始置换的影响,这一步的输出就是DES算法的输出,即输出分组=IP-1(R16 , L16),此处在输入IP-1之前,16轮迭代输出的两个半分组又进行了一次交换。
DES的加密与解密算法都是用上述三个步骤,不同的是如果在加密算法中使用的轮密钥为k1, k2,…, k16,则解密算法中的轮密钥就应当是k16, k15,…, k1,可记为(k1`, k2`,…, k16`)=( k16, k15,…, k1)。
在加密密钥k下,将明文消息m加密为密文c,使用DES将c在k下解密为明文,解密过程如下:(L0`,R0`)=IP(c)=IP(IP-1(R16 , L16)),即(L0`,R0`)=(R16 , L16);在第一轮中,L1`= R0`= L16 =R15,R1`=L0`f(R0` ,k1`)= R16f(L16 ,k1`)=[ L16f(R15 ,k16)]f(R15 ,k16)= L15,即(L1`,R1`)=(R15 , L15);同样的,在接下来的15轮迭代中,可以得到(L2`,R2`)=(R14 , L14),……,(L16`,R16`)=(R0 , L0);最后一轮结束后,交换L16`和R16`,即(R16`,L16`)=( L0, R0),IP-1(L0, R0)= IP-1(IP(m))=m,解密成功。
运行程序如下所示:
总结与分析:
程序设计过程中, 进一步掌握了数据加密标准DES的算法原理及实现,理解了DES的子密钥的产生原理及其实现。并通过程序能加密解密。
附件:
Ch6 数据加密标准DES的算法的程序设计文件
注:实验结束,将所有材料打包(文件采用统一格式:sn1-学号,以后的实验资料采用类似的文件格式)压缩并发送到:hzsx2004@yahoo.com.cn
