AES加密
AES_CBC
AES_ECB
from Crypto.Cipher import AES
import base64
password = '1234567890123456'.encode("utf-8") #秘钥
text = '1234567890123456'.encode("utf-8") #需要加密的内容
model = AES.MODE_ECB #定义模式
aes = AES.new(password,model) #创建一个aes对象
en_text = aes.encrypt(text) #加密明文
print(en_text)
en_text = base64.encodebytes(en_text) #将返回的字节型数据转进行base64编码
print(en_text)
en_text = en_text.decode('utf8') #将字节型数据转换成python中的字符串类型
print(en_text.strip())
相关问题
更于:2021-09-28
问题一,安装crypto后报错No module named ‘Crypto.Cipher‘
o module named ‘Crypto.Cipher’
No module named ‘Crypto.Publickey‘
第一步,先检查安装包crypto文件夹下是否有cipher、publickey等文件。若有,可将crypto文件夹重命名为Crypto试一下。
若如图所示像我这样没有那些文件,就安装下pycryptodome和pycrypto.
参见:https://www.cnblogs.com/ss0202go/p/13161545.html
问题二,报错解决:TypeError: Object type class ‘str’ cannot be passed to C code
text=text.encode(“utf-8”)
key=key.encode(“utf-8”)
iv=key.encode(“utf-8”)
明文,密钥,IV都要编码
参见:https://blog.csdn.net/z15362133416/article/details/100135331
问题三,报错解决:Incorrect AES key length (11 bytes)
异常信息:无效的AES密钥长度:11字节
由于AES的秘钥规定是16位秘钥,这里写成了11位,所以异常了。
参见:https://blog.csdn.net/qq501569325/article/details/109648082
扫描二维码关注公众号,回复:
13771498 查看本文章
