`
huobengluantiao8
  • 浏览: 1029143 次
文章分类
社区版块
存档分类
最新评论

关于C++和JAVA,AES/ECB/PKCS5Padding 互相通信的问题

 
阅读更多

AES/ECB/PKCS5Padding

C++中好像没有这样的标准,因此如果程序中需要这个格式,需要自己手动实现。

其实网上AES/ECB,C++方面资源的比较多,就是PKCS5Padding,这个能实现的相当少,自己实现原理如下:

AES一般是16个字节为一块,然后对这一整块进行加密,如果输入的字符串不够16个字节,就需要补位,

PKCS5Padding:填充的原则是,如果长度少于16个字节,需要补满16个字节,补(16-len)个(16-len)例如:

huguozhen这个节符串是9个字节,16-9= 7,补满后如:huguozhen+7个十进制的7

如果字符串长度正好是16字节,则需要再补16个字节的十进制的16。

上面说的是加密,解密的话,对要解密码的字符串按字节来判断,具体原则如下:

因为加密时补的是十进制1到16,解密时,需要把这部分补位的去掉,判断要解密的字符串,每个字节是不是 char>=1 && char<= 16,如果是的话,就用0来替换以前的值,直到结束。

同时需要注意的是,C++的字符串是以空格结束的,如果一个字符串像
ayilian,这个经过加密后,第一个字符为0,就是结束了后面的字符串读不到,因此,enbase64的时候,需要指明长度和字符串指针,不要只传入字符串指针,这样加密的值是空的

希望对你有帮助,有问题可以联系本人,guyuewuhua@163.com

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics