Java加密扩展(JCE, Java Cryptography Extension ) 是一组提供加密、密钥生成、密码协议和消息认证码(MAC, Message Authentication Code )算法的框架和接口包,支持包括对称密码、不对称密码、分组密码、流密码. 该软件还支持安全流和密封对象.从J2SE 1.4开始的版本,JDK和JRE中内嵌了JCE,(译者注:所以不需要下载就可以直接使用JCE)而J2SE 1.2和1.3需要下载JCE 1.2.2才能使用JCE。( leechane译自Sun Microsystems, Inc.官方网站的JCE链接)

  在前几年,JCE的出口是禁止的,所以JDK中没有提供实现方法,这就需要单独安装第三方提供的工具包来实现上文所说的功能。可以根据Sun公司官方网站提供的第三方名单进行下载,这其中只有一部分是免费的,而另一部分则是收费的。但现在对JCE的管制逐渐放开,我们可以使用新版本的JDK中的方法进行程序设计了,当然如果觉得JDK内置的工具包不尽完善,或者怀疑其还是对一些技术进行了简化处理,可以使用第三方的工具包。我使用的是Assembla JCE Provider Version 1.3.1,下载后是一个可执行文件,自动将工具包安装到<Java JRE>\lib\ext目录和<Java JDK>\jre\lib\ext目录中。该工具包安装后还提供了详细的用户指南说明JCE工具包的配置方法,现总结后归纳如下:

  首先,工具包是以jar文件发布的,安装时需要将相关的jar文件复制到上文所说的目录中,否则需要将jar所在的目录加入classpath中,这个操作是必须的,否则编译时将出现无法找到类的错误提示。这一步在使用Assembla JCE Provider时是安装程序自动完成的。

  其次,在使用JCE还有一个必须的步骤是注册( Register ),Assembla提供了两种方法:使用java.security.Security包中的insertProviderAt方法;或者在<Java JDK>\jre\lib\security目录中修改java.security文件,找到其中的security.provider.<number> = 这一项,加入一行,注意<number>是搜索工具包的优先级,要想使用新安装的工具包,则需要把它设置为比Java默认的工具包更高的优先级才行,并且所有的<number>不能重复。

  然后就可以测试工具包是否安装成功了,编写代码时记得要在程序开始时把新安装的工具包import进去,可以使用try catch测试安装是否成功,调用其中的一个方法即可。具体的实现方法,可以参考提供者的开发文档,不再赘述。如果在使用过程中有任何问题,可以联系本文作者leechane

  另外,可以参考Sun官方网站的安全文档及其子链接Provider使用说明