作业帮 > JAVA > 教育资讯

JavaME安全策略(三):利用Bouncy Castle应对安全挑战

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 08:27:50 JAVA
JavaME安全策略(三):利用Bouncy Castle应对安全挑战
JavaME安全策略(三):利用Bouncy Castle应对安全挑战JAVA
【51Test.Net - JAVA】
尽管SATSA等可选的解决方案能够解决许多设备的问题,但是依赖于一种可选的解决方案不符合Java坚持的“编写一次,在任何地方运行”的承诺。幸运的是,有一种能够在Java ME上运行的解决方案:Bouncy Castle Java加密API。此API是在澳大利亚开发的,可以在一个完全开源的许可下获得,它提供了JCE和JCA提供者的面向Java SE的纯粹实现,还提供了一个为Java ME量身定做的轻量型加密API。此API能够实现许多流行密码算法,包括DES、AES、Blowfish、国际数据加密算法(International Data Encryption Algorithm,IDEA)等,以及一些消息摘要算法,包括MD5和SHA。该API还提供了大量实用功能,支持抽象语法标记(Abstract Syntax Notation One,ASN.1)加密和解密、X.509数字证书、公钥交换文件以及Secure/MIME(S/MIME)和OpenPGP编解码器。
可以从http://www.bouncycastle.org/java.html获得该API的一个副本;编写本书时,最高版本为1.39。你需要下载此版本并进行解压,然后将ZIP文件放在项目的lib目录下的zips目录中。
Bouncy Castle API包含许多包;以下是最可能使用到的一些包。
qorg.bouncycastle.crypto:包括表示加密引擎、摘要以及其他基本构造的基础类。
qorg.bouncycastle.crypto.digests:包括实现消息摘要算法的类。
qorg.bouncycastle.crypto.engines:包括实现密码算法的类。
qorg.bouncycastle.crypto.generators:包括实现密钥生成器的类。
qorg.bouncycastle.crypto.params:包括实现指定密码算法选项的表示法的类。
值得注意的一点就是,针对Java ME的完整的Bouncy Castle实现非常庞大:接近1.5M字节!当然,几乎没有应用程序需要该API提供的所有功能。要根据API管理应用程序的大小,需要使用一个混淆器——3.3.2节已经介绍过。NetBeans包含了ProGuard(http://proguard.sourceforge.ent)混淆器,能够出色地管理输出应用程序的大小。图15-2给出了使用Bouncy Caslte API的合适设置;并在Build属性下选择Obfuscating。
说明 当混淆包使用了Bouncy Castle API时,-defaultpackage ‘’指令尤为重要,因为Bouncy Castle在java包中提供了一些类,比如java.math.BigInteger类。CLDC的类加载器不会加载在系统包中定义的类,因为这样做会产生安全威胁(将允许恶意应用程序使用自己的类替换系统类)。通过使用-defaultpackage ‘’指令,混淆器重命名该包中的所有类,从而阻止这类问题的产生。
JAVA