Data Encryption Standard(DES)加解密实现(C++)

1.DES简介:DES是Data Encryption Standard的缩写,是美国国家标准局于1977年公布的由IBM公司研制的加密算法,并被作为非机要部门使用的数据加密标准。DES算法是应用最广泛的一种分组密码算法,对密码理论的发展和应用起了重大作用。DES综合运用了置换、代替、代数等多种密码技术,是面向二进制的密码算法,因而能够加解密任何形式的计算机数据。

2.DES加密算法:DES算法中数据以64比特分组进行加密,有效密钥长度为56位。它的加密算法与解密算法相同,只是解密子密钥与加密子密钥的使用顺序刚好相反。

3.程序思路:程序最关键的地方在于对明文的分块处理、二进制转化、盒子操作、以及子密钥的产生和十六次加密迭代使用。因此,在进行实验时目标明确,先处理密钥,生成16个48位的子密钥,再处理明文,接着实现盒子操作与加密函数f,然后迭代16次,产生64位数据组,之后对数据组进行处理后,经过逆初始置换,得到64位明文,至此一组加密过程全部结束。在本实验中,定义以下规则:(1)将初始明文/密文分组并依次转化为二进制比特流之后,若分组内比特流长度不足64位,则补0。(2)对密钥的操作处理:输入7位英文字符,得到其对应的ASCII码,将ASCII码用二进制表示,最终得到56位二进制比特流,将此作为DES的56位密钥。之后在第8,16,24,32,40,48,56,64位处插入奇偶校验位,合成64位密钥。

4.DES整体流程

.png - Data Encryption Standard(DES)加解密实现(C++)

5.子密钥产生流程:

.png - Data Encryption Standard(DES)加解密实现(C++)

6.算法步骤

.png - Data Encryption Standard(DES)加解密实现(C++)

7.函数说明

.png - Data Encryption Standard(DES)加解密实现(C++)

8.DES加解密实现(C++)

程序结果验证:

验证一:

1.从键盘输入加密。加密内容为www.flagxue.cn,密钥为program.

1 - Data Encryption Standard(DES)加解密实现(C++)

2.加密。加密结果保存在DESciphertext.txt.

1 - Data Encryption Standard(DES)加解密实现(C++)

3.从文件解密。解密文件为DESciphertext.txt, 密钥为program.

1 - Data Encryption Standard(DES)加解密实现(C++)

4.解密。解密后结果恢复www.flagxue.cn.解密结果保存在DESplaintext.txt.

1 - Data Encryption Standard(DES)加解密实现(C++)

验证二:

1.新建文件temp.txt, 将待加密内容写入文件。或者选择任一待加密文件。

.png - Data Encryption Standard(DES)加解密实现(C++)

2.从文件加密。密钥为flagxue.

2 - Data Encryption Standard(DES)加解密实现(C++)

3.加密。加密结果保存在DESciphertext.txt.

2 - Data Encryption Standard(DES)加解密实现(C++)

4.从文件解密。解密文件为DESciphertext.txt, 密钥为flagxue.

2 - Data Encryption Standard(DES)加解密实现(C++)

5.解密。解密后恢复明文,解密结果保存在DESplaintext.txt.

2 - Data Encryption Standard(DES)加解密实现(C++)

其他信息:

1.二进制明/密文信息

.png - Data Encryption Standard(DES)加解密实现(C++)

2.密钥信息

.png - Data Encryption Standard(DES)加解密实现(C++)

3.生成子密钥过程(部分省略)

.png - Data Encryption Standard(DES)加解密实现(C++)

4.子密钥信息

.png - Data Encryption Standard(DES)加解密实现(C++)

5.分块流程(部分省略)

.png - Data Encryption Standard(DES)加解密实现(C++)

思考:

1.DES 的原理是什么?

答:DES是分组加密算法, 明文按64位进行分组,有效密钥长度为56位。通过将分组后的明文组和56位的密钥按位替代或置换的方法形成密文组。

2.DES使用多少位密钥?

答:DES使用56位密钥。

3.DES对明文分块的单位是多少?

答:DES算法中明文以64位进行分组。

4.DES对每一个数据块加密的轮次是多少?

答:DES对每一个数据块加密的轮次为16轮。

5.简单描述EBox的操作过程。

答:Ebox是一种扩展运算,对32位的数据组的各位按照一定的顺序进行选择和排列,产生一个48位的结果。

6.简单描述SBox的操作过程。

答:Sbox将48比特向量通过非线性映射变为32比特向量。首先,48比特的向量被分为8个6比特分组,8个分组在8个不同的非线性Sbox的作用下被转变为8个4比特分组,其中每个Sbox都将6比特输入映射为4比特输出。

7.简单描述PBox的操作过程。

答:Pbox是一种置换运算,把Sbox输出的32位数据打乱重排,得到32位的加密函数输出。用P置换来提供扩散,把S盒的混淆作用扩散开来。

[编译运行环境:g++ (Debian 7.3.0-19) 7.3.0]



1
说点什么

avatar
250
  关注  
最新 最旧 得票最多
提醒
匿名
游客
匿名

很详细!谢谢!