1、实验环境:
框架脚本:Python3.5
UI设计脚本:Wxpython4.0.1
平台:Win10
资源链接(含实验报告文档):https://download.csdn.net/download/mynameisyournamewuyu/10473131
2、界面截图
2、实验内容:
1)DES加密算法:
(1)加解密字符串。
(2)加解密文件。
(3)界面设计。
2)RSA加密算法:
(1)RSA生成公私钥及加密解密过程演示。
(2)RSA加密解密
3、实验目的:
(1)理解对称加密算法的原理和特点
(2)理解DES算法的加密原理和使用模式
(3)了解非对称加密机制
(4)理解RSA算法的加密原理
4、实验过程:
DES加密算法:
1、对密钥的处理:
由于用户输入的秘钥是8个字符,故首先要将其转化为64位的二进制字符串,该功能由handle.py中的keyencode函数实现:
2、 加密流程:
1) 点击复选框,选择是加密文件还是字符串,如果选择,则导入文件的内容到明文区。
2) 用户输入的明文为任意字符串(包含中文字符以及英文字母以及标点符号),首先要进行分组处理,分组成64位二进制一组的二进制字符串,最后一组不足64位的使用填充法,该部分由handle.py中的encode函数处理。
3) 接着根据之前得到的64位秘钥以及明文,依次进行DES加密,得到包含所有64位密文的数组。
4) 接着要将各64位的密文连在一起得到二进制的密文字符串,再对其进行base64编码得到最终的输出字符串,该部分由handle.py中的base64encode函数处理。
5) 进度条显示当前加密进度
3、 解密流程:
1) 解密首先要对得到的密文字符串进行反base64编码处理,去掉后面添加的‘=’,接着将其根据base64的编码规则转化为二进制字符串,然后去掉之前添加的‘0’字符,然后将字符串进行分组,分为64位一组。这一部分由handle.py中的base64decode函数完成。
2) 接着根据之前得到的64位秘钥以及密文,依次进行DES解密,得到包含所有64位明文的数组。
3) 接着要对得到的包含所有64位明文的数组进行处理,首先去掉之前填充的多余的字符,接着对二进制字符串进行反编码得到源字符串。该部分由handle.py中的decode函数得到。
RSA加密算法:
1、 加密流程:
1) 随机选取两个不相等的质数p和q。
2) 计算p和q的乘积
n:n=pxq
3) 计算欧拉函数φ(n)。(程序里我用的是u(n))
φ(n)=(p-1)x(q-1)
4) 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
5) 计算e对于φ(n)的模反元素d。
6) 将n和e封装成公钥,n和d封装成私钥。
公钥:(e,n) 私钥:(d,n)
7) 密文c=明文m^公钥e mod 公钥n:
C=m^e mod n
2、 解密流程:
1) 前面6个步骤相同
2) 明文m=密文c^私钥d mod私钥n:
M=c^d mod n
reference:
https://www.cnblogs.com/lomooo/p/6358329.html
https://www.cnblogs.com/lomooo/p/6083344.html