论不使用除rsa之外的任何其他模块实现RSA加密解密,以及密钥存储

        以下内容是我在自己研究加密的时候发现的问题:

        我的目标是写一个密码存储程序,但是涉及密码存储又不使用数据库,就必须要对存储密码的文件进行加密,而读取这些密码还需要解密。在加密手段中比较可行的就是RSA加密。然而RSA加密在用Python实现时存在一些问题。crypto、pycrypto、pycrytodome这三个本来是足够强大且极其便捷的加密解密模块,但坏消息是我用PyCharm是无法使用这些模块的,需要VS,而且下载了VS也很麻烦,还要修改一些列的东西才能使pip install xx这一简单的指令得以运行。可用的就是rsa模块,但是我从网上捯饬了好几个小时都没找到一个完整的从加密解密到密钥存储全流程问题解决(主要是我需要静态密钥,需要存储下来,不然早解决了)。于是在总结了诸多前人的程序,再结合我的综合和修正完善,我实现了仅使用rsa模块就能完成一系列连贯的操作。

        上代码:

import rsa


(pubkey, privkey) = rsa.newkeys(1024)  # 获取1024位的公钥密钥,获取出的结果为rsa.key.PublicKey类型

pub = pubkey.save_pkcs1()  # 公钥转化为bytes类型
pub_file = open('public.pem', 'w+')  # 新建(也算是打开)public.pem文件,这个文件是存储rsa密钥专用的
pub_file.write(pub.decode())  # 将pub解码为字符串后写入文件
pub_file.close()  # 关闭文件

pri = privkey.save_pkcs1()  # 私钥转化为bytes类型
pri_file = open('private.pem','w+')  # 同上之理
pri_file.write(pri.decode())  # 同上之理
pri_file.close()  # 同上之理

message = "message"  # 明文
with open('public.pem') as publickfile:
    p = publickfile.read()  # 打开文档读取密钥,p为字符串型

with open('private.pem') as privatefile:
    q = privatefile.read()  # 同上之理

privkey = rsa.PrivateKey.load_pkcs1(q.encode())  # 编码q为bytes型,然后转换回rsa.key.PublicKey类型
pubkey = rsa.PublicKey.load_pkcs1(p.encode())  # 同上之理

crypto = rsa.encrypt(message.encode(), pubkey)  # 编码
message = rsa.decrypt(crypto, privkey)  # 解码
print(message.decode())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河之书Liu_Zixin

不要打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值