openssl库中AES 解密的实践体会

最近在项目中遇到了对AES-128加密的TS流进行解密,很自然地我想到了用开源的openssl库,通过初步研究AES解密API的使用,实现了成功解密,看到了TS视频流的播放,可纳闷地是偶尔会出现严重的马赛克,于是便仔细核查原因,首先我TS流过来是一小片段一小片段的,那么是不是初始化向量出问题了,再者就是流的加密是不是算法有问题,最后分析方向应该从第一个原因下手,找到原因发现原来我每个片段的初始化向量被AES解密的函数更新了,使得有的片段初始化向量不正确了,所以用一个全局值来保存每个IV即可,每次IV传递过来做一个memcpy动作。简单示例如下:

INIT:

AES_set_decrypt_key(userKey, 128,  aeskey);

memcpy(aesIV,IV,16);

DECRYPT:

while(1)

{

......

  AES_cbc_encrypt(data_in, data_out,  16, aeskey,    aesIV, AES_DECRYPT);

.....

}

你可能感兴趣的:(编程)