如何将自定义十六进制IV转换为Python AES所需的字节格式?
自定义IV转换为字节格式的解决方案
原代码通过Random.new().read(AES.block_size)生成的iv是字节类型(bytes),而你定义的val是十六进制格式的字符串。要将其转换成和自动生成IV相同的格式,只需把十六进制字符串解码为字节串即可,Python内置的bytes.fromhex()方法可以直接完成这个转换:
from Crypto.Cipher import AES # 自定义的十六进制IV字符串 val = "643f5a4957263b6b4e72544e42593275" # 转换为字节格式的IV custom_iv = bytes.fromhex(val) # 验证格式(输出会和自动生成的IV格式一致) print(custom_iv)
关键说明
- 你的
val长度为32个十六进制字符,刚好对应16字节(每2个十六进制字符对应1字节),完全符合AES对IV的长度要求(AES块大小固定为16字节)。 - 如果自定义的十六进制字符串长度不符合要求(比如不是32位),
bytes.fromhex()会抛出ValueError,因此要确保字符串长度正确。
内容的提问来源于stack exchange,提问作者Duck
相关产品推荐
相关产品推荐

