Java DESede用C++ Openssl实现


最近在看一个项目的代码

开发语言:C++

开发环境:VS2005

但有一个很别扭的地方,就是这个项目与外界的加密算法采用DESede,但其实现是采用jni调用java vm里面的函数。

查了一下,可以用Openssl来实现,但要注意model(ECB)和padding(PKCS#5)



#资料

PKCS5, PKCS7和SSL3, 以及CMS(Cryptographic Message Syntax)

有如下相同的特点:
1)填充的字节都是一个相同的字节
2)该字节的值,就是要填充的字节的个数

如果要填充8个字节,那么填充的字节的值就是0×8;
要填充7个字节,那么填入的值就是0×7;

如果只填充1个字节,那么填入的值就是0×1;

这种填充方法也叫PKCS5, 恰好8个字节时还要补8个字节的0×08

正是这种即使恰好是8个字节也需要再补充字节的规定,可以让解密的数据很确定无误的移除多余的字节。

Java DESede用C++ Openssl实现


参考资料:

[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加密 

http://blog.chinaunix.net/uid-25943311-id-3020013.html

你可能感兴趣的:(java,C++,OpenSSL,3des,desede)