python中cryptodome的AES

博客介绍了cryptodome中AES的使用。AES是对称加密算法,属于分组密码,将明文分组加密,分组长度固定为128位,密钥长度可选128位、192位或256位,不同密钥长度推荐加密轮数不同,还提及了Python代码及使用流程。

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

cryptodome中的AES使用

AES特性

AES为对称加密, 使用密钥来加密解密.
AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。

python代码
from Cryptodome.Cipher import AES
from Cryptodome import Random


data = '需要加密的数据'

# 密钥key需要为16, 24, 32长度的字节类型数据.
# 我们使用AES-128位(16字节)来使用.
key = b'1234567890123456'   # 16bytes

# 还需要使用一个向量.
iv = Random.new().read(AES.block_size)  # 生成一个长度等于AES块大小并且不重复的密钥向量对象.

# 使用key和iv初始化AES对象, 使用MODE_CFB模式.
aesobj = AES.new(key, AES.MODE_CFB, iv)

# 加密的数据的长度需为16的倍数, 不足16则会自动补足.
# 将密钥向量加到加密后的密文开头, 一起传输(方便后面解密).
aescrypto = iv + aesobj.encrypt(data.encode())
print(aescrypto)

# 解密需要使用Key和iv生成新的AES对象.
aesobj2 = AES.new(key, AES.MODE_CFB, aescrypto[0:16])

# 使用新的AES对象来解密.
aescrypto2 = aesobj2.decrypt(aescrypto[16:])
print(aescrypto2.decode())  # 这里记得decode()哦
流程
1.准备好合适的key, data.
2.创建iv密钥向量对象.
3.使用key, iv创建用于加密的AES对象.
4.使用加密的AES对象encrypt进行加密.

5.使用原有的key, iv创建用于解密的AES对象.
6.使用解密的AES对象decrypt进行解密.

可以使用binascii模块来对加密后的数据进行格式化输出.
(ps: 遇错得改..)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值