灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3145回复:0

java加密解密研究2、Bouncy Castle和Commons Codec加密组件

楼主#
更多 发布于:2012-09-08 09:46

java的加密解密的API中,几乎各种常用的加密算法都能找到对应的实现,但还是难免会有遗憾:受出口限制,密钥长度上不能满足要求;部分算法未能支持,如MD4、SHA-224等算法;API使用起来还不是很方便;一些常用的进制转换辅助工具未能提供,如Base64转换、十六进制编码转换等工具。
所以我们可以使用别的开源组织的项目来代替,例如Bouncy Castle(http://www/bouncycastle.org/)提供了一系列算法支持实现,并可以跻身于JCE框架之下,以提供者的方式纳入其中。还有Commons Codec(http://commons.apache.org/codec/)是国际开源组织Apache旗下的一款开源软件


加密组件Bouncy Castle

一、获得加密组件
可以通过Bouncy Castle提供的下载地址:http://www.bouncycastle.org/latest_releases.html,下载最新的加密组件包,主要是bcprov-jdk16-143.jar和bcprov-ext-jdk16-143.jar两个文件,如果你还需要其API的话,还可以下载bcprov-jdk16-143.zip文件。




二、应用
对于Bouncy Castle提供的扩充算法支持,我们有两种方案可选:
1)、配置方式。通过配置JRE环境,使其作为提供者(Provider)提供相应的算法支持,在代码实现层面只需要指定要扩展的算法名称。

2)、调用方式、在调用java API初始化相应的密钥工厂、密钥生成器等引擎类之前,通过代码将Bouncy Castle提供者引入,获得扩展算法支持。


①、配置方式
1、打开%JDK_HOME%jrelibsecurityjava.security文件,加入Bouncy Castle组件的支持,添加下面这一句:
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider

2、导入bcprov-ext-jdk16-143.jar包
将我们之前下载的bcprov-ext-jdk16-143.jar放到%JDK_HOME%jrelibext目录下。
3、对%JRE_HOME%目录的相应配置与上述%JDK_HOME%目录配置相类似。


②、调用方式
将我们之前下载的bcprov-jdk16-143.jar导入工程即可


这两种方式各有优点,不过,一般采用第二种方式更加方便。



辅助工具Commons Codec
Commons Codec是Apache旗下的一款开软件,主要用于编码格式的转换,如Base64、二进制、十六进制、字符集和Url编码的转换。甚至,Commons Codec还提供了语音编码的转换。除此之外,Commons Codec还对java原生的消息摘要算法做了良好的封装,提供了方法的易用性。

一、获得辅助工具
直接登录Commons Codec官网(http://commons.apache.org/codec/),下载最新的组件包(http://commons.apache.org/codec/download_codec.cgi)。组件包分为两种压缩格式tar.gz和.zip。这里我们选择下载.zip格式的组件包

49_3710_c964f739a65edfb.jpg[设为封面] [删除]



二、应用
将下载的commons-codec-1.6-bin.zip解压,将解压开的文件夹里面的commons-codec-1.6.jar包导入工程即可。


摘自 LonelyRoamer的专栏


喜欢0 评分0
游客

返回顶部