AES无IV解密报错:IV长度不符合要求的问题求助
AES解密问题排查与解决方案
先解决IV长度错误的问题
你碰到的ValueError: Incorrect IV length (it must be 16 bytes long)是因为AES块大小固定为16字节(128位)——不管密钥是128/192/256位,IV必须刚好16字节。朋友说取加密数据第一个块当IV的思路是对的,但你可能没正确提取:
- 如果加密数据是Hex编码:第一个块对应32个Hex字符(1字节=2个Hex字符),得先把整个加密数据用
unhexlify转成字节,再取前16字节当IV,剩下的才是真正要解密的密文主体。 - 如果加密数据是Base64编码:先解码成字节,再切前16字节当IV,剩下的是密文。
你的几个疑问逐一解答
1. 解密后数据是UTF-8编码吗?
不一定。游戏里的配置、存档类数据常是二进制格式(比如protobuf自定义结构、固定长度字段),就算是文本也可能带不可见控制字符。解密后可以先试着转UTF-8,要是报错就存成二进制文件,用十六进制编辑器(比如010 Editor)分析结构。
2. binascii.unhexlify能用在当前场景吗?
看数据和密钥的实际编码:
- 你的密钥是64个字符:如果是Hex编码,
unhexlify后会得到32字节,正好是AES-256的密钥长度,这个假设很合理。 - 加密数据如果是纯Hex字符(只有0-9、a-f/A-F),就用
unhexlify解码;如果是Base64(含大小写字母、数字、+、/,结尾可能有=),就用base64.b64decode。你可以对比数据开头的字符特征判断。
3. 怎么确认数据和密钥的编码格式?
- 密钥64字符:Hex转成32字节(AES-256)是游戏加密常用的标准密钥长度;如果是Base64,64字符转成48字节,这不是AES的标准密钥长度(16/24/32字节),所以你假设是Hex的概率很高。
- 加密数据:拿开头一段字符和Hex/Base64的特征对比,或者两种解码方式都试一遍,看哪种解码后能得到16字节的IV和看起来合理的后续密文。
修正后的代码示例
假设密钥是Hex编码(64字符→32字节AES-256),加密数据也是Hex编码:
import binascii from Crypto.Cipher import AES from Crypto.Util.Padding import unpad # 替换成你的实际密钥和加密数据 hex_key = "你的64字符密钥字符串" hex_ciphertext = "你的加密数据Hex字符串" # 解码密钥和加密数据为字节 key = binascii.unhexlify(hex_key) cipher_data = binascii.unhexlify(hex_ciphertext) # 拆分IV和实际密文 iv = cipher_data[:16] actual_ciphertext = cipher_data[16:] # 用CBC模式解密(需要IV的场景大概率是CBC) cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = cipher.decrypt(actual_ciphertext) # 去除PKCS7填充(游戏常用的填充方式) try: plaintext = unpad(plaintext, AES.block_size) except ValueError: # 可能没有填充或者用了其他填充方式,直接保留原始解密结果 pass # 尝试转UTF-8输出,失败则保存为二进制文件 try: print(plaintext.decode('utf-8')) except UnicodeDecodeError: with open('decrypted_game_data.bin', 'wb') as f: f.write(plaintext) print("解密后是二进制数据,已保存到decrypted_game_data.bin")
如果加密数据是Base64,把binascii.unhexlify(hex_ciphertext)换成base64.b64decode(hex_ciphertext)就行。
额外实用提示
- 游戏加密常用CBC或CTR模式,CBC需要填充,CTR不需要。如果unpad报错,试试换成
AES.MODE_CTR模式(注意CTR的IV有时叫nonce,游戏里常和CBC一样用16字节)。 - 解密后的二进制数据,你可以用十六进制编辑器查找和“鼠标控制”“菜单限制”相关的字段——通常这类开关是布尔值(00/01)或枚举值,找到后修改再重新加密替换回游戏文件即可。
内容的提问来源于stack exchange,提问作者Thanos
相关产品推荐
相关产品推荐

