分享
 
 
 

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

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

级别: 中级

孙 瑛霖, 软件工程师, IBM 中国软件开发实验室 SOA设计中心

2007 年 4 月 16 日

xml 数字签名技术用于对 XML 格式的数据进行数字签名,以保证报文的完整性,不可否认性,以及提供身份认证信息。JSR 105 提供了 XML 数字签名的 java 接口,而最近发布的 Java SE 6 则包括了 JSR 105的 实现,从而为基于 Java 的应用程序提供了标准的 XML 数字签名接口。本文首先简要介绍技术背景,以实例来讲解 XML 数字签名的语法和处理规则,之后用具体的程序例子解释如何使用 Java SE 6 生成各种格式的 XML 数字签名并进行验证。

1. 技术背景

1.1 数字签名简介

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

图 1:数字签名的原理

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

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

1.2 XML 数字签名简介

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

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

1.3 XML 数字签名实例

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

表 1签名前的 XML 文档

1.<?xml version='1.0'?>

2.<PaymentInfo xmlns="http://example.com/payment">

3. <CustomerName>Peter</CustomerName>

4. <Amount>10000</Amount>

5. <CreditCardInfo>

6. <ID>4392 5649 8178 2315</ID>

7. <Issuer>CMB</Issuer>

8. <Expiration>06/2010</Expiration>

9. <Currency>USD</Currency>

10. </CreditCardInfo>

11.</PaymentInfo>

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

表 2 签名后的 XML 文档

1.<?xml version="1.0" encoding="UTF-8" standalone="no"?>

2.<PaymentInfo xmlns="http://example.com/payment">

3. <CustomerName>Peter</CustomerName>

4. <Amount>10000</Amount>

5. <CreditCardInfo>

6. <ID>4392 5649 8178 2315</ID>

7. <Issuer>CMB</Issuer>

8. <Expiration>06/2010</Expiration>

9. <Currency>USD</Currency>

10. </CreditCardInfo>

11. <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">

12. <SignedInfo>

13. <CanonicalizationMethod

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

14. <SignatureMethod

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

15. <Reference URI="">

16. <Transforms>

17. <Transform

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

18. </Transforms>

19. <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>

20. <DigestValue>9gETxLIm1huTZtMkmGlybtZWa5g=</DigestValue>

21. </Reference>

22. </SignedInfo>

23. <SignatureValue>

OIFpnZmeGt+tOywzTgrcYBje/04uGmGIrbZYYxxXj4jsBdq+0JwZ1A==

</SignatureValue>

24.<KeyInfo>

25.<KeyValue>

26. <DSAKeyValue>

27.<P>

28./KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64

29.B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFw==

30.</P>

31.<Q>li7dzDacuo67Jg7mtqEm2TRuOMU=</Q>

32.<G>

33.Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG

34.541Awtx/XPaF5Bpsy4pNWMOHCBiNU0NogpsQW5QvnlMpA==

35.</G>

36.<Y>

37.NMxkCcO6Hdd146qBJ4FQGPpz8IncS8onBPshqlxsd

38.pAqgM2lgn8kCPHqfO7jLx7NPZwHeDtHLfKKSYg+Ln6Xzw==

39.</Y>

40. </DSAKeyValue>

41.</KeyValue>

42.</KeyInfo>

43. </Signature>

44.</PaymentInfo>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有