Java DESede用C++ Openssl實現


最近在看一個項目的代碼 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加密 

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

相關文章
相關標籤/搜索