【实验】RSA数据加密与解密
实验名称:RSA数据传输加密
实验原理:使用 python 生成 RSA 秘钥文件,再使用其秘钥文件对要传输的明文信息进行加密和解密
实验目的:使用 python 的 rsa 模块生成秘钥文件,并使用秘钥文件进行加解密
实验环境:python编译环境
实验流程:
打开 cmd 命令行,输入命令 pip install rsa,安装 rsa 包。并进入打开 python 查看 rsa 是否安装:命令行进入 python 之后输入 import rsa 导入 rsa 模块,未报错说明该模块已安装 成功能够使用。


新建一个名为 keycreate.py 的生成秘钥的文件,使用命令 import rsa 导入 rsa 模块,使 用 rsa 模块下的 newkeys()生成公钥和私钥,并将生成公钥和私钥存入两个变量之中。

释义 | 代码 |
导入Python模块 rsa
rsa 导入 rsa 模块,使 用 rsa 模块下的 newkeys()生成公钥和私钥,并将生成公钥和私钥存入两个变量之中;
是将公钥的变量进行重新赋值,先将原公钥进行一 个 pkcs1 的格式转换然后 decode 转码后进行存储。
对转好的文件进行存储;
| import rsa
pubkey,privkey = rsa.newkeys(1024)
pubkey = pubkey.save_pkcs1().decode()
pubkeyfile = open('pubkey.pem','w+') pubkeyfile.write(pubkey) pubkeyfile.close()
privkey = privkey.save_pkcs1().decode() privkeyfile = open('privkey.pem','w+') privkeyfile.write(privkey) privkeyfile.close() |
我们执行我们刚刚编写的keycreate python程序脚本,执行结束后我们便可以在当前文件夹下查看到新创建生成了privkey.pem、pubkey.pem 2个文件

我们使用记事本打开这两个文件可以便可以看到生成的秘钥文件


新建一个名为 crtpt.py 的公钥加密文件,添加一个可以输入的变量 message 作为我们要 加密的明文,读取存储公钥的文件,用命令 pubkeyfile=open('pubkey.pem')打开秘钥文件, 通过 load_pkcs1()去读取从文件中得到的秘钥信息,通过命令 rsa.encrypt() 将明文通过公钥加密,最后存入 crypt 文件中。

释义 | 代码 |
导入python模块rsa;
定义用户输入变量message存储预加密明文
读取打开秘钥文件pubkey.pem
通过 load_pkcs1()去读取从文件中得到的秘钥信息
通过命令 rsa.encrypt() 将明文通过公钥加密
| import rsa
message = input('Message:')
pubkeyfile = open('pubkey.pem')
pubkey = rsa.PublicKey.load_pkcs1(pubkeyfile.read())
crypt = rsa.encrypt(message.encode(),pubkey) cryptfile = open('crypt','wb+').write(crypt)
|
执行python文件脚本 crtpt.py,加密文字信息“information”得到一个加密文件;如图所示

我们接下来对刚才加密的文件进行解密,我们需要通过私钥进行解密,新建一个名为 decrypt.py 的私钥解密 文件,通过 rsa.PrivateKey.load_pkcs1()命令打开生成的私钥文件并读取私钥,使用命令 rsa.decrypt()对加密内容进行解密并赋值到 message,最后将其输出。
释义 | 代码 |
导入python模块rsa; 通过 rsa.PrivateKey.load_pkcs1()命令打开生成的私钥文件并读取私钥;
使用命令 rsa.decrypt()对加密内容进行解密并赋值到 message,最后将其输出。
| import rsa
crypt = open('crypt','rb').read()
privkeyfile = open('privkey.pem')
privkey = rsa.PrivateKey.load_pkcs1(privkeyfile.read())
message = rsa.decrypt(crypt,privkey)
print(message.decode('utf-8')) |
执行Python程序脚本输出我们原来加密的内容“information”;

至此实验成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通