下载到一个 3000K 码率 HLS 的 m3u8 文件,下载所有的 TS 文件再进行合并,单个 TS 文件容量 4.5G 多,用 openssl 进行解密,知道是 AES-128-CBC 解密,有 key 文件( 16 字节),用 hexdump 查看密钥发现是 32 字节的,用命令 openssl aes-128-cbc -d -in in_file.ts -out out_file.ts -nosalt -iv 00000000000000000000000000000001 -K XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 进行解密,解密到最后提示 error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:528: 查阅过资料出现 EVP_DecryptFinal_ex 函数错误这提示有可能是还有没解密完的数据块,一般情况是密文不正确、不是块大小的整数倍才会出现没解密完的数据块,但是我尝试下载解密其他码率的 m3u8 文件(如 500K,1000K,2000K )用的都是同个密钥,都能成功解密,唯独这个 3000K 的解密出现问题,之后以为是文件下载不完全,后来又下载下载了一直想不通哪里出问题,是因为视频容量太大导致吗?还是我解密的方法有问题,因为这是我第一次解密超过 4G 的文件,过往成功解密都是小于 4GB 的 TS 文件,上面说到的解密出错的 3000K 文件,输出之后前半部分可以播放,后半部分就无法播放,本人 m3u8 菜鸟,望 V2EX 大神指点相救,谢谢了.