最近在看一个项目的代码 html
开发语言:C++ java
开发环境:VS2005 算法
但有一个很别扭的地方,就是这个项目与外界的加密算法采用DESede,但其实现是采用jni调用java vm里面的函数。 函数
查了一下,能够用Openssl来实现,但要注意model(ECB)和padding(PKCS#5) ui
#资料 加密
PKCS5, PKCS7和SSL3, 以及CMS(Cryptographic Message Syntax) .net
有以下相同的特色:
1)填充的字节都是一个相同的字节
2)该字节的值,就是要填充的字节的个数 3d
若是要填充8个字节,那么填充的字节的值就是0×8;
要填充7个字节,那么填入的值就是0×7; unix
… htm
若是只填充1个字节,那么填入的值就是0×1;
这种填充方法也叫PKCS5, 刚好8个字节时还要补8个字节的0×08
正是这种即便刚好是8个字节也须要再补充字节的规定,能够让解密的数据很肯定无误的移除多余的字节。
参考资料:
[1]Java DESede encrypt, OpenSSL equivalent
http://stackoverflow.com/questions/9038298/java-desede-encrypt-openssl-equivalent
[2] DES 算法的 C++ 与 JAVA 互相加解密
http://www.cnblogs.com/WonKerr/archive/2009/11/11/DES_C_JAVA.html
[3]Java中3DES加密解密与其余语言(如C/C++)通讯
http://lijunjie337.iteye.com/blog/717911
[4]pkcs#5和pkcs#7填充的区别
http://hi.baidu.com/tweetyf/item/36d2f94a8639320ae8350480
[5]使用openssl库实现des,3des加密