DES+RSA密码工具(图形界面)

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

好的,我会为您解答这个问题。首先,我需要说明的是,由于您的问题涉及到多个方面的知识,我无法在这里给您提供完整的代码。但我会尽力为您提供一些思路和参考资料。 1. DES/AES算法加密通信内容 DES和AES都是对称加密算法,可以用来加密通信内容。Python标准库中包含了DES和AES的实现,您可以使用它们进行加密。具体的使用方法可以参考Python官方文档或者其他博客、教程等。 2. 利用Diffie-Hellman密码协商协议生成DES加密密钥k Diffie-Hellman密码协商协议可以用来在两个通信方之间协商一个密钥。在您的情况下,Alice和Bob可以使用Diffie-Hellman协议生成一个DES加密密钥k。具体的实现方法可以参考这篇博客:https://www.cnblogs.com/TracyMcGrady/p/9300673.html 3. Alice使用RSA算法生成公私钥对,并将公钥发送给Bob RSA算法是一种非对称加密算法,用于生成公私钥对,并且可以使用公钥加密、私钥解密。在您的情况下,Alice可以使用RSA算法生成公私钥对,并将公钥发送给Bob。具体的实现方法可以参考这篇博客:https://www.cnblogs.com/TracyMcGrady/p/9300673.html 4. 设计好图形界面,可验证自动生成的密钥和加解密正确的结果并输出 这部分内容需要使用GUI框架来实现,Python中比较流行的GUI框架有Tkinter、PyQt、wxPython等。您可以选择一个您熟悉或者喜欢的框架来实现。在界面中,您需要提供一些输入框、按钮等控件,用于输入明文、生成密钥、加密、解密等操作。并且需要提供一些输出框,用于输出加密后的密文、解密后的明文等结果。 5. RSA算法使用不小于1024比特的模数N RSA算法的安全性与模数N的大小有关系,一般情况下,使用不小于1024比特的模数N是比较安全的。您可以使用Python标准库中的RSA模块来实现RSA算法。具体的使用方法可以参考Python官方文档或者其他博客、教程等。 6. 使用Socket编程建立Alice和Bob的通信连接 Socket编程可以用来建立两个程序之间的通信连接。在您的情况下,Alice和Bob可以使用Socket编程建立一个TCP连接,用于传输加密后的通信内容。具体的实现方法可以参考这篇博客:https://www.cnblogs.com/TracyMcGrady/p/9300673.html 7. 素数生成使用标准库gmp 素数生成是密码学中常见的操作,Python中可以使用标准库gmp来生成大素数。具体的使用方法可以参考这篇博客:https://www.cnblogs.com/TracyMcGrady/p/9300673.html 希望这些参考资料能够帮助您完成您的保密通信项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值