You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AES-128-CBC解密TS文件遇EVP_DecryptFinal_ex:bad decrypt报错求助

解决AES-128-CBC解密.ts文件失败(输出0字节+Bad Decrypt报错)的问题

从你给出的报错信息和命令来看,问题主要出在密钥/IV的格式不正确,还有可能是.ts文件的合并方式不对,下面一步步帮你排查解决:

1. 先解析报错原因

  • the hex string is too short, padding with zero bytes to the length:这个提示直接说明你提供的密钥(或IV)长度不够。AES-128要求密钥是128位(16字节),对应32个十六进制字符;IV同样需要16字节(32个十六进制字符)。你用的-K 313863756468736b63646b6a616b只有28个字符,OpenSSL会自动补零凑够长度,但这必然导致密钥和加密时使用的不匹配,直接引发解密失败。
  • bad decrypt:这是密钥/IV不匹配、输入文件无效(比如合并错误)的典型报错,最终导致OpenSSL无法生成有效解密内容,输出0字节文件。

2. 关键修正步骤

(1)补全密钥和IV的正确格式

  • 密钥:找到完整的32位十六进制密钥(比如你当前的密钥缺4个字符,需要确认加密方使用的完整密钥)。
  • IV:不要只写-iv 0,如果加密时用的是全零IV,要写成-iv 00000000000000000000000000000000(32个0);如果是其他值,必须用完整的32位十六进制字符串。

修正后的命令示例(假设补全后的密钥是313863756468736b63646b6a616b1234):

openssl aes-128-cbc -d -in D:\Test\joined_files.ts -out D:\Test\decrypt_I00100000.ts -iv 00000000000000000000000000000000 -K 313863756468736b63646b6a616b1234 -md SHA256

(2)检查.ts文件的合并方式

很多加密的流媒体.ts文件是每个片段单独加密的(每个片段有自己的IV),这种情况下不能直接合并所有加密的.ts文件再解密——必须先逐个解密每个.ts片段,再把解密后的片段合并成完整文件。

你可以先拿单个.ts文件测试解密:

openssl aes-128-cbc -d -in D:\Test\单个片段.ts -out D:\Test\解密后的单个片段.ts -iv <正确的IV> -K <正确的密钥> -md SHA256

如果单个文件能解密成功,就说明你之前的合并顺序错误,应该换“先解密再合并”的流程。

(3)可选:调整哈希算法参数

有些OpenSSL版本默认的哈希算法和加密时使用的不一致,你可以尝试去掉-md SHA256参数,看看是否能解密成功:

openssl aes-128-cbc -d -in D:\Test\joined_files.ts -out D:\Test\decrypt_I00100000.ts -iv <完整IV> -K <完整密钥>

3. 额外排查点

  • 确认合并后的.ts文件没有损坏:可以用文件查看工具(比如Notepad++的十六进制插件)检查文件头部,看是否符合AES-CBC加密后的格式(通常前16字节是IV,但如果是多片段合并,会有多个IV段)。
  • 确认你使用的OpenSSL版本兼容:不同版本的OpenSSL在加密解密参数上可能有细微差异,建议使用较新的稳定版本。

内容的提问来源于stack exchange,提问作者shantanu goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:07:40