编码理论实验报告实验三加密编码——DES数据加密算法
时间:2025-07-09
时间:2025-07-09
实验名称 实验三 加密编码--------DES数据加密算法
一、 实验目的
1. 了解DES加密,解密过程;
2. 在Visual C++环境中运用C语言实现DES加密,解密; 3. 会用DES加密方法对文件进行加密。
二、实验内容
1. 在Visual C++环境中运用C语言熟练实现DES加密; 2. 在Visual C++环境中运用C语言熟练实现DES解密。
三、 实验原理
1. DES加密的定义
DES是一种分组密码,也是一种单钥密码。 2. DES的特点
明文分组比较短、密钥较短、密码生命周期较短、运算速度较慢。 3. DES加密算法描述
在DES中明文分组长为64比特,密钥长为56比特。明文处理过程大致分为3个阶段,首先为一个初始置换IP,用于重排明文分组的64比特数据。然后是相同功能的16轮迭代,每轮中都有置换和代换运算,第16轮变换的输出分为左右两半,并被交换次序。最后再经过一个逆初始置换(IP的逆)从而产生64比特的密文。在上述运算中还涉及密钥的产生和运算。 4. DES解密算法描述
DES的解密过程和DES的加密过程完全类似,只不过将16轮的子密钥序列K1,K2, ,K16的顺序倒过来。即第一轮用第16个子密钥K16,第二轮用K15,以此类推。
四、 实验步骤
1. DES加密步骤 (1)初始IP置换
表2-1 初始置换IP
说明:上表元素下标从1开始,按行优先顺序排列,表中数字代表经过IP置换后,在该位置的元素对应的在原分组中元素的下标。如:变换后第一个位置的元素为原来下标为58的元素,变换后下标为2的元素为原来下标为50的元素。 (2)在16轮迭代的过程中,每一轮具体的运算
在每轮迭代中,将每轮64比特的输入分成32比特的左右两半,分别记为L和R,每轮变换可由下列公式表示:
Li=Ri-1
Ri=Li-1 F(Ri-1,Ki)
如上述公式所示,第i轮迭代的左半部分直接即为第i-1轮的右半部分,而第i轮右半部分为第i-1轮左半部分异或F(Ri-1,Ki)。
(3)逆初始置换IP-1,从而得到最后的密文。
逆初始变换如表2-2所示。
表2-2 逆初始变换
(4)密钥的产生
如表2-3所示,初始输入的64比特密钥首先经过该置换(PC-1)运算,再分成28比特的左右两半,分别记为C0和D0。在每一轮迭代中分别对上一轮的C和D进行左循环移位,每轮具体移位数如表2-4所示。移位后的结果作为求下一轮子密钥的输入,同时该结果经过如表2-5所示的置换(PC-2)运算后,产生本轮48比特的子密钥参与函数F(Ri-1,Ki)的运算。
表2-3 密钥置换PC-1
表2-4 子密钥各轮移位位数
表2-5 密钥置换PC-2
2. DES解密步骤
DES的解密过程和DES的加密过程完全类似,只不过将16轮的子密钥序列K1,K2, ,K16的顺序倒过来。即第一轮用第16个子密钥K16,第二轮用K15,以此类推。比如,在产生解密密钥的过程中每轮应该右循环移位,而且第i轮的移位位数等于加密时第(17-i)轮的移位位数(i=1,2,3, ,16)。
实验参考程序
见DES.c程序。
实验思考
1. 了解二重DES和三重DES的有关概念及其实现。
二重DES:利用两个独立的密钥,通过DES算法进行两次连续加密。 三重DES:又叫做“带有双密钥的三重DES”,是利用两个DES迷药,进行“加 密-解密-加密”的运算(加解密过程仍然一致)。 2. DES从加密原理上归为哪一类(私钥体制或公钥体制)?
私钥体制
实验心得:通过本次实验了解了DES加密,解密过程,并运用C语言实现DES加密,解密。
下一篇:儿童文学的美学特质