Openssl AES加解密问题(已解决)

我在cocos2dx 里使用openssl 的AES CBC模式加解密文件时,遇到解密出的文件总是比原来的明文少几个字节,文件末尾部分的几个字丢失,以下是我的加解密代码,请各位不吝啬赐教,先谢谢了!

int DataTools::AESEncrypt(char * pData, int nLen, char * pBuffer, int nBufLen, char * pszKey)
{
AES_KEY aesKey;
AES_set_encrypt_key((unsigned char *)pszKey, 0x80, &aesKey);

char iv;
memcpy(iv, pszKey, 16);


 
 int nNewLen;
 
 {
 
 //round up
 
 int len = nLen;
 
 int multiple = AES_BLOCK_SIZE;
 
 if ((len+1) % multiple == 0){
 
 nNewLen = len+1;
 CCLog("no need to fill");
 }
 
 
 else{
 
 nNewLen = ((len / multiple) + 1) * multiple;
 
 CCLog("fill number:%d",multiple-len%multiple);
 }
     
 
         
 }
 
 }

//AES_cbc_encrypt((unsigned char *)pData, (unsigned char *)pBuffer, nLen, &aesKey, (unsigned char *)iv, AES_ENCRYPT);
AES_cbc_encrypt((unsigned char *)pData, (unsigned char *)pBuffer, nNewLen, &aesKey, (unsigned char *)iv, AES_ENCRYPT);

return nLen;

}

int DataTools::AESDecrypt(char * pData, int nLen, char * pBuffer, int nBufLen, char * pszKey)
{
AES_KEY aesKey;
AES_set_decrypt_key((unsigned char *)pszKey, 0x80, &aesKey);

char iv;
memcpy(iv, pszKey, 16);

AES_cbc_encrypt((unsigned char *)pData, (unsigned char *)pBuffer, nLen, &aesKey, (unsigned char *)iv, AES_DECRYPT);

return nLen;

}

if ((len+1) multiple == 0){ 这句有问题,你试一下 if ((len+multiple-1) multiple == 0){