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