AES-128加密视频OpenSSL解密‘iv undefined’报错解决咨询
AES-128-CBC视频解密的OpenSSL正确操作步骤
核心问题分析
你遇到的错误根源是密钥格式不匹配和IV参数格式错误:OpenSSL的-K和-iv参数只接受纯十六进制字符串,你用的带特殊字符的原始密钥、带0x前缀的IV都会导致解析失败。
具体操作步骤
1. 把原始密钥转成十六进制格式
AES-128要求密钥是16字节(对应32个十六进制字符),你手里的特殊字符密钥得先转成十六进制。直接在终端跑这条命令:
echo -n "—ØËÉްʾC{]5q)pZE4d4:-MBB¬vóRJ”7–Æ‹5•Õ" | xxd -p
输出的一串纯十六进制字符,就是给-K用的密钥。
2. 修正IV格式
把你提供的IV去掉0x前缀,只保留纯十六进制部分:496daa1c6914000e408c65cead91fc29,确保长度是32个字符(16字节,符合CBC模式要求)。
3. 执行正确的解密命令
根据输入文件是否是Base64编码,选择对应命令:
- 如果
Question1.ts是Base64编码的加密文件:
openssl enc -nosalt -aes-128-cbc -d -in Question1.ts -base64 -K '转换后的十六进制密钥' -iv '496daa1c6914000e408c65cead91fc29' -out output.ts
- 如果是原始二进制加密文件,去掉
-base64参数:
openssl enc -nosalt -aes-128-cbc -d -in Question1.ts -K '转换后的十六进制密钥' -iv '496daa1c6914000e408c65cead91fc29' -out output.ts
(output.ts是解密后的视频文件名,可自行修改)
4. 常见错误排查
iv undefined:IV带了0x前缀或者长度不对,检查IV是否是32个纯十六进制字符。non-hex digit:密钥/IV包含非0-9、a-f/A-F的字符,重新转换密钥确保输出是纯十六进制。hex string is too long:密钥长度超过32个十六进制字符,说明原始密钥不是16字节,确认密钥来源是否正确。
内容的提问来源于stack exchange,提问作者Shridhar Salunkhe
相关产品推荐
相关产品推荐

