|
发表于 2019-4-7 14:27:24
|
显示全部楼层
用楼主给的AES_TEST()可以正常加解密,但是我把函数封装了一下,加密出来的数据就不对了。
待加密的原字符串有21个字符,加密时前面的16个字节是正常的,但是后面的5个字节,和AES_TEST()加密出来的不同。
我封装的如下:
void aes_encrypt_api(unsigned char *pDt,unsigned int dwLen)
{
unsigned char chainCipherBlock[16];
unsigned char aucTemp[16] = {0};
unsigned char ucLen = 0;
memset(aucChainCipherBlock,0x00,sizeof(aucChainCipherBlock));
aesEncInit();//在执行加密初始化之前可以为AES_Key_Table赋值有效的密码数据
while(i<dwLen)
{
memset(aucTemp,0x00,16);
if((i + BLOCKSIZE) < dwLen)
{
ucLen = BLOCKSIZE;
}
else
{
ucLen = dwLen - i;
}
CopyBytes(aucTemp,pIn,ucLen);
aesEncrypt(aucTemp, aucChainCipherBlock);//AES加密,数组dat里面的新内容就是加密后的数据。
CopyBytes(pIn,aucTemp,ucLen);
i += BLOCKSIZE;
pIn += BLOCKSIZE;
}
}
大家看看错在哪个地方了? |
|