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


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

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

            上代码:

    1. import rsa
    2. (pubkey, privkey) = rsa.newkeys(1024) # 获取1024位的公钥密钥,获取出的结果为rsa.key.PublicKey类型
    3. pub = pubkey.save_pkcs1() # 公钥转化为bytes类型
    4. pub_file = open('public.pem', 'w+') # 新建(也算是打开)public.pem文件,这个文件是存储rsa密钥专用的
    5. pub_file.write(pub.decode()) # 将pub解码为字符串后写入文件
    6. pub_file.close() # 关闭文件
    7. pri = privkey.save_pkcs1() # 私钥转化为bytes类型
    8. pri_file = open('private.pem','w+') # 同上之理
    9. pri_file.write(pri.decode()) # 同上之理
    10. pri_file.close() # 同上之理
    11. message = "message" # 明文
    12. with open('public.pem') as publickfile:
    13. p = publickfile.read() # 打开文档读取密钥,p为字符串型
    14. with open('private.pem') as privatefile:
    15. q = privatefile.read() # 同上之理
    16. privkey = rsa.PrivateKey.load_pkcs1(q.encode()) # 编码q为bytes型,然后转换回rsa.key.PublicKey类型
    17. pubkey = rsa.PublicKey.load_pkcs1(p.encode()) # 同上之理
    18. crypto = rsa.encrypt(message.encode(), pubkey) # 编码
    19. message = rsa.decrypt(crypto, privkey) # 解码
    20. print(message.decode())

  • 相关阅读:
    GN+NINJA环境搭建(MacOS Windows)
    MAC执行graalvm并编译
    2台三菱plc FX5u能否实现无线数据交互?
    京东获取推荐商品列表 API
    【Linux】环境变量
    【Wayland】QtWayland框架分析
    (三)vulhub专栏:Ecshop Sql注入、远程代码执行漏洞复现
    【深入浅出Spring6】第九期——Spring对事务的支持
    面试系列分布式事务:谈谈3PC的理解
    Vue使用脚手架(ref、props、mixin、插件、scoped)(七)
  • 原文地址:https://blog.csdn.net/weixin_61864411/article/details/126931084