/Files/hijackwust/071229200308.rar轉(zhuǎn)自:
http://blogold.chinaunix.net/u1/52224/showart.php?id=453114
以前做項(xiàng)目的時候需要C++和Java之間進(jìn)行數(shù)據(jù)通信,要解決相互信任和數(shù)據(jù)安全的問題,使用了RSA-SHA1簽名做證書,通信開始時傳遞證書然后使用RSA加密AES密鑰,以后通信使用AES加密進(jìn)行數(shù)據(jù)傳輸,所以封裝了RSA/PKCS #1, AES/CBC/PKCS#1, SHA1, RSA-SHA1 Signature,另外為了方便數(shù)據(jù)轉(zhuǎn)換,封裝了Base16和Base64算法。
C++部分使用了Wei Dai整理的開源C++加密工具cryptopp(
www.cryptopp.com),cryptopp是一個非常優(yōu)秀和完善的開源C++加密工具,將C++技術(shù)和設(shè)計模式使用到了淋漓盡致的地步,不過對于初學(xué)者來說比較難以上手,特別是需要將項(xiàng)目交給初學(xué)者來實(shí)現(xiàn)的時候,所以當(dāng)時在cryptopp的基礎(chǔ)上做了一些封裝,并且將RSA,AES,SHA1,RSA-SHA1 Sign分離成獨(dú)立的類,并且添加了Base16和Base64編碼算法,使用這幾個加密算法,幾乎可以解決一般項(xiàng)目對通信安全的需要。
Java部分使用了JDK自帶的SunJCE加密框架,一般網(wǎng)上可以找到的Java加密解密都是使用SunJCE框架,還有一個比較著名的Java開源加密工具是bouncycastle(
http://www.bouncycastle.org/),因?yàn)镾unJCE是JDK自帶的,所以使用比較方便,相對于cryptopp,SunJCE要容易上手得多,幾乎不需要再做封裝,不過為了跟C++封裝統(tǒng)一,也做了簡單的封裝,保持C++接口和Java接口相近。
C++封裝在Visual Studio 2003下測試通過,Java封裝在jdk1.5.0_14下測試通過。
更詳細(xì)的信息,解壓縮后參考/doc/crypto.doc和源代碼.
 |
文件: |
crypto.2007.12.29.20.01.apacheL.rar |
大小: |
224KB |
下載: |
下載 |
sha1: 99C1BF0396B35518DB34C1566462B3AE786744CD
sha256: F5325064D1D5E25A45F1EE19E126C847E181EC7720472785429E8331252830CF
sha512: BCF60EB80253C6C8D5F813A4E04FF1A84C0CF4FE64BD9D591EE592D39267EF5F7A1611C922856D960515E58087A67D6994643178ABA5C52470D4C624E27591D9 |