/Files/hijackwust/071229200308.rar转自:
http://blogold.chinaunix.net/u1/52224/showart.php?id=453114
以前做项目的时候需要C++和Java之间进行数据通信,要解决相互信任和数据安全的问题,使用了RSA-SHA1签名做证书,通信开始时传递证书然后使用RSA加密AES密钥,以后通信使用AES加密进行数据传输,所以封装了RSA/PKCS #1, AES/CBC/PKCS#1, SHA1, RSA-SHA1 Signature,另外为了方便数据转换,封装了Base16和Base64算法。
C++部分使用了Wei Dai整理的开源C++加密工具cryptopp(
www.cryptopp.com),cryptopp是一个非常优秀和完善的开源C++加密工具,将C++技术和设计模式使用到了淋漓尽致的地步,不过对于初学者来说比较难以上手,特别是需要将项目交给初学者来实现的时候,所以当时在cryptopp的基础上做了一些封装,并且将RSA,AES,SHA1,RSA-SHA1 Sign分离成独立的类,并且添加了Base16和Base64编码算法,使用这几个加密算法,几乎可以解决一般项目对通信安全的需要。
Java部分使用了JDK自带的SunJCE加密框架,一般网上可以找到的Java加密解密都是使用SunJCE框架,还有一个比较著名的Java开源加密工具是bouncycastle(
http://www.bouncycastle.org/),因为SunJCE是JDK自带的,所以使用比较方便,相对于cryptopp,SunJCE要容易上手得多,几乎不需要再做封装,不过为了跟C++封装统一,也做了简单的封装,保持C++接口和Java接口相近。
C++封装在Visual Studio 2003下测试通过,Java封装在jdk1.5.0_14下测试通过。
更详细的信息,解压缩后参考/doc/crypto.doc和源代码.
|
文件: |
crypto.2007.12.29.20.01.apacheL.rar |
大小: |
224KB |
下载: |
下载 |
sha1: 99C1BF0396B35518DB34C1566462B3AE786744CD
sha256: F5325064D1D5E25A45F1EE19E126C847E181EC7720472785429E8331252830CF
sha512: BCF60EB80253C6C8D5F813A4E04FF1A84C0CF4FE64BD9D591EE592D39267EF5F7A1611C922856D960515E58087A67D6994643178ABA5C52470D4C624E27591D9 |