保护您的J2ME/MIDP应用程序 - 编程入门网
析成 Java 对象(请参阅 参考资料)。除了 kXML 外,还有几个可在不同许可证条款下使用的其它 MIDP XML 解析器。
签署消息并验证签名。这些功能需要一个不属于当前 MIDP 1.0 规范的密码术 API。 在下一节中,我将讨论一种轻量级 Java 密码术包,您可以在服务器端和无线 MIDP 设备端上使用它来生成并验证 XML 数字签名。 Bouncy Castle Crypto API Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包。它支持大量的密码术算法,并提供 JCE 1.2.1 的实现。因为 Bouncy Castle 被设计成轻量级的,所以从 J2SE 1.4 到 J2ME(包括 MIDP)平台,它都可以运行。它是在 MIDP 上运行的唯一完整的密码术包。 不管 Bouncy Castle 包的功能有多强大,它有一个主要问题:缺少文档。不存在在线文档,其 JavaDoc 写得并不好。与许多其它高级密码术包相似,Bouncy Castle 包广泛使用类型多态性来将常规概念与实现算法分开。对于初学者来说,辨认类之间的关系以及方法参数和返回值的正确类型是很困难的。通常,开发人员必须浏览一下源代码和测试用例来研究做事的正确方法。显然,Bouncy Castle 包的指南非常合适。 在本文的其余部分,我们将简略地论述 XML 数字签名规范以及几个不同 Bouncy Castle 密钥生成器、编码引擎、数字签名签名引擎和摘要引擎的用法。 合在一起 到目前为止,我们已经讨论了许多技术和概念。下面,我将说明完整过程:密钥生成、在服务器端签署文档、以安全的 XML 格式编码和传送文档以及在客户机端验证文档。 服务器使用一组密钥模型参数生成由一个随机公钥和一个私钥组成的密钥对。在实际生产系统中,这个步骤通常不是必需的,因为密钥对通常是预先生成的并存储在服务器密钥库中。 访问 JSP 页时,服务器计算响应消息的摘要。 然后,JSP 页以“签署”方式调用签名引擎,并使用私钥为摘要生成数字签名。 服务器将签名信息(包括摘要、数字签名本身和公钥参数)嵌入 XML 响应消息中。 客户机接收 XML 文档并将摘要、数字签名和公钥参数解析成 Java 应用程序数据。 客户机计算来自明文消息的摘要并将它与服务器的摘要进行比较。如果两个摘要不匹配,则文档验证失败;如果它们匹配,则转至下一步。 客户机使用嵌入的密钥参数重新构造公钥。 客户机以“验证”方式调用签名引擎,并传递摘要、签名和公钥来验证签名。 在接下来的几节中,我们将遵循这些步骤来实现几个示例。因为我们的示例在服务器端和客户机端使用相同的 Bouncy Castle Crypto API,所以很容易更改它们以在无线设备上签署消息并在服务器端验证它。 保护您的J2ME/MIDP应用程序(3)时间:2011-01-07 IBM Michael Juntao Yuan处理摘要 正如我早先提到的那样,为了改进性能并避免攻击造成堵塞,您实际上签署的是消息摘要而不是消息本身。清单 1 说明了如何使用 SHA1Digest 摘要引擎来计算来自一段文本消息的已编码的摘要。 清单 1. 创建已编码的摘要
在下几节中,我们将了解如何使用 Bouncy Castle 的 DSA、ECC 和 RSA 签名引擎来签署并验证数字签名。那些签名引擎使用不同的算法和不同的密钥,并且需要不同的参数。我们还将讨论如何将安全性信息(签名、摘要和公钥)嵌入 XML 文档。最后,我将比较三个签 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |