读书人

C++实现AES算法的填充方式,该怎么处理

发布时间: 2012-04-22 18:34:46 作者: rapoo

C++实现AES算法的填充方式
现在数据库的用户名信息需要进行解密,该密文是由JAVA通过AES算法进行加密的。
然后我再通过C++的方式进行解密,发现前面的字符串都是一样的,但后面总是会多出几个字符串出来。
后来发现是填充方式的造成的,JAVA在进行加密的时候,如果加密的数据不满16个字节的话,JAVA会进行填充。
导致我C++进行解密的时候总是会多出几个字符串.
有没有大人帮忙一下。谢谢了。

[解决办法]
前不久刚好在公司做过一个AES加密解密的模块,可以给你解答一下。
由于128位的AES加密要求对16个字节为一组进行加密,而加密的文本不一定是16字节的整数倍,
所以在尾部会造成乱码,我当时是这样处理的:

1.加密部分

C/C++ code
AES aes; //全局AES对象//分配内存空间,将字符串尾巴补齐成16的倍数BYTE *pBuffer = new BYTE[(nStrLength / 16 + 1) * 16];aes.Cipher((void *)pBuffer, (nStrLength / 16 + 1) * 16); //对这块内存进行加密 

读书人网 >C++

热点推荐