频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java SE 6中XML数字签名标准Java接口

来源: 作者: 出处:巧巧读书 2007-04-20 进入讨论组
上一页 1 2 3 4 5 

3.3 生成并验证Detached格式的签名

    Detached 格式的签名指 <Signature> 元素与被签名的数据内容之间是彼此分离的,既不是包含关系也不是被包含关系,如下表所示:

 1.	..............
 2.	<SignedData>
 3.	    ..............
 4.	</SignedData>
 5.	..............
 6.	<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
 7.	    ..............
 8.	</Signature>
 9.	..............
	

    Detached 格式多用于对外部独立的数据对象进行签名,使用 URI 来引用外部数据对象,也可以引用同一 XML 文档中的其他元素,对之进行数字签名。

    表3中待签名的 XML 文档包含有两次信用卡交易的支付信息,第一个是 Simon 的信用卡交易记录,第二个是 Peter 的。本节将对 Peter的支付记录进行数字签名,所使用的签名格式是 Detached 格式。为了让 <Signature> 元素能够引用到包含有 Peter 信用卡交易信息的 XML 元素,这里用 id 属性对 Peter 的 <PaymentInfo> 元素加以引用。

3.3.1 生成签名

本节的大部分代码都与生成 Enveloped 格式签名的代码相同,只是在创建 Reference 的时候有些不同:

 1.	XMLSignatureFactory fac =
 2.	    XMLSignatureFactory.getInstance("DOM");
 3.	
 4.	// Create the reference to Peter's payment info
 5.	DigestMethod sha1DigMethod = 
 6.	    fac.newDigestMethod(DigestMethod.SHA1, null);
 7.	Reference ref = 
 8.	    fac.newReference("#PeterPayment", sha1DigMethod);
	

"#PeterPayment" 用于引用位于同一文档中的 Peter 的 <PaymentInfo> 元素。

3.3.2 验证签名

    使用表 5 中的 validate 方法对生成的数字签名进行验证,输出信息表示验证成功。然后在生成的 XML 文档中,将 Simon 的支付金额改为 30000,重新验证,结果依然为验证成功。这是因为只对 Peter 的支付记录进行签名,所以 Simon 的支付信息改变,不会影响数字签名的验证结果。如果再将 Peter 的支付金额改为 50000,重新验证,则输出信息显示验证失败。

4. 总结

    同传统意义的数字签名技术相比,XML 数字签名技术有很多不可替代的优点。它能够在保持 XML 文档良构性的前提下,对文档内容进行细粒度的签名和验证;通过资源引用和转换的机制,扩大了签名的作用范围,更能够满足分布式应用系统中的安全需求

    W3C 组织制订的 XML 数字签名规范规定了标准的 XML 签名语法和处理规则,而Java SE 6则为 XML 数字签名提供了标准的 Java 接口。目前这些 XML 数字签名规范和程序标准还在进一步完善中,相信随着技术的发展,XML 数字签名技术必将得到越来越广泛的应用。



 

参考资料

  • Donald E. Eastlake, Joseph M. Reagle, David Solo, XML-Signature Syntax and Processing (http://www.w3.org/TR/xmldsig-core/), W3C Recommendation, Feb 12, 2002

  • JSR105 - XML Digital Signature APIs(http://jcp.org/en/jsr/detail?id=105

  • JSR106 - XML Digital Encryption APIs(http://jcp.org/en/jsr/detail?id=106

  • Apache XML Security(http://xml.apache.org/security/

  • Sun Java SE 6(http://java.sun.com/javase/6/

  • developerWorks 中国网站 XML 技术专区

  • developerWorks 中国网站 Java 技术专区

关于作者

Java SE 6中XML数字签名标准Java接口(图二)

Java SE 6中XML数字签名标准Java接口(图二)

孙瑛霖,软件工程师,现就职于IBM中国SOA设计中心,对网络与分布式系统、安全和SOA等技术有着浓厚的兴趣。

来自:http://www.qqread.com/java/2007/04/w309643.html 更多文章 更多内容请看QQ个性签名汇总Java环境安装配置Java编程开发手册专题,或进入讨论组讨论。
上一页 1 2 3 4 5 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章