python 第三方库 crypto

本文记录了在Python中使用crypto库时遇到的导入问题及解决方案,建议卸载所有crypto模块后安装PyCryptodome。还介绍了RSA和AES的使用,包括密钥生成、加密解密的概念,强调非对称加密与对称加密的权衡。提供了一个简单的AES加密文件的Demo,并推荐了一个详细的AES参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

crypto导入报错问题解决记录

安装没有什么问题,不管哪一个实际上都是crypto,这个库似乎有点特殊

from Crypto.PublicKey import RSA

如果显示导入报错,别急

先卸载安装过的所有的crypto模块,pip list,看一看带crypto名字的,全都pip uninstall xxx

全部卸载干净后:pip install pycryptodome

一定要全部卸载后,如果已经安装过pycryptodome,也要卸载,不然依然报错。必须卸载完所有安装的crypto模块,最后安装pycryptodome

补充

网上大部分都是重命名的方案,把crypto大小写重新改名,个人认为对于第三方库,最好不要做修改,哪怕是这种很小的改动。

如何使用 (RSA)

代码如下:

如果使用过linux操作系统的人一定对于密钥的生成不陌生,ssh-keygen,生成密钥,用于免密登录。

代码先生成一对密钥,然后使用这对密钥进行加密和解密。这里要提一下对称加密和非对称加密。

从安全性上来考虑,非对称加密>对称加密,RSA 是非对称加密,AES 是对称加密,安全性高并不意味着好,越高的安全性意味着越低的效率,不过在低数据量下,二者差别不大,所以可以按需使用。最佳的方式就是用 RSA 加密 AES 密钥,AES 加密信息,这样的话就发挥了两者的优势。

RSA,bits越高越安全,但同时也意味着低效率,这里使用2048,实际体验时候可以试试4096。

import os.path

from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA

def generate_key(_public_path,_private_path,bits=2048):
    if os.path.exists(_public_path) and os.path.exists(_private_path):
        return
    # if os.path.exists(_private_path):
    #     os.remove(_private_path)
    # if os.path.exists(_public_path):
    #     os.remove(_public_path)
    private_key = RSA.generate(bits=bits)
    with open(_public_path, "wb") as f:
        f.write(private_key.publickey().export_key())
    with open(_private_path, "wb") as f:
        f.write(private_key.export_key())

def encryption_decryption(_public_path, _private_path, _message = u"你好,我的全世界!"):
    bytes_message = bytes(_message, encoding ="utf-8")
    with open (_public_path,"rb") as f:
        _public_key = RSA.importKey(f.read())
    cipher 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值