java xml 签名_Java SE 6中 XML 数字签名的标准 Java 接口

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

2771ca892c7b2591131a36eb05b9a9bb.png

孙 瑛霖

2007 年 4 月 16 日发布

1.技术背景

1.1数字签名简介

数字签名是非对称密钥技术的一种应用模式,用于保证报文的完整性,不可否认性,以及提供身份认证信息。数字签名的原理如图 1 所示。

图 1:数字签名的原理

7a17fe583dbf0f1030d3d54531096bda.png

7a17fe583dbf0f1030d3d54531096bda.png

发送者在发送报文之前,先选用某种摘要算法为报文生成一个摘要值,并使用自己的私钥对摘要值加密,然后将加密后的摘要附在报文后面,一同发送给报文的接收者。接收者收到报文后,从中分离出原始报文和加密后的报文摘要,使用与发送者相同的摘要算法计算原始报文的摘要值 D,并使用发送者的公共密钥将加密后的报文摘要解密得到摘要值 D’,检查 D 与 D’ 是否匹配。

如果匹配,那么由于密钥对的唯一性,所以可以确定报文发送者的身份,而且由于数据摘要算法的特点,还可以确定原始报文在传输过程中没有被篡改。

1.2XML 数字签名简介

XML 发展至今,已经逐渐成为标准的数据描述技术,在分布式应用中广泛地用于数据的交换。由于 XML 数据本身的特殊性和使用 XML 进行数据传输的分布式应用的特点,在对 XML 文档的特定部分进行签名,多方签名,以及签名后保持 XML 文档原有的良构特性等诸多方面,传统的数字签名技术都无法很好地实现。

基于这样的问题,W3C 组织制订了 XML 数字签名规范,规定了标准的 XML 数字签名语法和处理规则。同传统意义的数字签名相比,XML 数字签名能够对 XML 文档进行细粒度地分析,支持多种方式的文档数据转换,只对文档的特定部分进行签名和验证,并且能够保持 XML 文档的良构特性。此外,XML 数字签名提供的密钥信息表示方法清晰易读,更加便于签名的自动验证处理。

1.3XML 数字签名实例

本节用一个简单的例子来介绍 XML 数字签名的语法和处理规则。

表 1签名前的 XML 文档1.<?xml version='1.0'?>

2.

3. Peter

4. 10000

5.

6. 4392 5649 8178 2315

7. CMB

8. 06/2010

9. USD

10.

11.

表 1 中的 XML 文档描述了 Peter 的信用卡支付记录。在按照 XML 数字签名规范对整个文档签名之后,生成的 XML 文档如表 2 所示:

表 2 签名后的 XML 文档1.<?xml version="1.0" encoding="UTF-8" standalone="no"?>

2.

3. Peter

4. 10000

5.

6. 4392 5649 8178 2315

7. CMB

8. 06/2010

9. USD

10.

11.

12.

13.

Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>

14.

Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>

15.

16.

17.

Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>

18.

19.

20. 9gETxLIm1huTZtMkmGlybtZWa5g=

21.

22.

23.

OIFpnZmeGt+tOywzTgrcYBje/04uGmGIrbZYYxxXj4jsBdq+0JwZ1A==

24.

25.

26.

27.

28. /KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64

29. B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFw==

30.

31.li7dzDacuo67Jg7mtqEm2TRuOMU=

32.

33. Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG

34. 541Awtx/XPaF5Bpsy4pNWMOHCBiNU0NogpsQW5QvnlMpA==

35.

36.

37. NMxkCcO6Hdd146qBJ4FQGPpz8IncS8onBPshqlxsd

38. pAqgM2lgn8kCPHqfO7jLx7NPZwHeDtHLfKKSYg+Ln6Xzw==

39.

40.

41.

42.

43.

44.

所有与 XML 数字签名相关的信息都存放在 元素中。 元素包含有几个主要的子元素: 元素至少包含一个 元素,每个 元素用于对待签名数据进行引用,包含有引用方式、转换方法、摘要算法和摘要值等信息。 还包含有 XML 数据的规则化方法,并指定了数字签名所使用的算法。

元素包含对 元素规范化后的内容进行签名生成的数字签名的值。

元素用于指定验证签名所需的公共密钥相关信息。

XML 数字签名的过程大致为:1.根据每个 元素中指定的资源引用方式,摘要算法,数据转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值