网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JXTA概念介绍(翻译).
.接口设计中的性能问题.
.eclipse新特性--JFace Data.
.使用消息驱动Beans(2).
.开发晋级篇:Java性能优化技巧集.
.了解J2ME在实际开发中的可选包MM.
.递归删除与给定的文件名不符的文.
.Nutch在Windows中安装之细解.
.JAVA中用动态代理类实现记忆功能.
.CreateFolder 方法.
.技巧分享——log4j的配制及测试程.
.使用Log4j进行日志操作.
.汉字问题深入谈.
.Java语言深入 JAVA之精髓IO流.
.一个堆栈类.
.Apache Tomcat 5.5.15.
.tomcat中文问题--过滤器.
.java虚拟机学习笔记.
.追求“简约不简单”的ORM映射框架.
.Java中使用正则表达式实现字符串.

JavaSE 6基于JSR105的XML签名之理论篇

发表日期:2008-1-5



  XML签名技术,这项在W3C建议中指定的XML签名语法及处理方法(XML-Signature Syntax and Processing),成为解决SOA开发中消息级安全性方案的基础。被普遍接受的OASIS标准WS-安全性(WS-Security)正是构建在这一技术(以及XML加密)基础之上。
JSR-105规范又对在Java平台应用XML签名技术进一步标准化,并且将成为即将到来的Java SE 6发行版本的一个组成部分。本系列文章(《理论篇》与《实践篇》)将基于Java SE 6的试发行版本对JSR-105作入门性介绍;在第二篇(即《实践篇》)中,我们将讨论一个具体的应用案例。

  一、 数据一致性和消息认证

  XML数字签名的主要目的是确保数据一致性。RFC 2828,因特网安全词汇表(Internet Security Glossary),把"一致性"定义为"在一种未授权的或偶然方式下确保数据没有改变、破坏或丢失的属性"。在这种意义上,与一个校验和一起存储或传递数据就可以实现数据的一致性。严格地说,XML签名能够实现比这种一致性更为丰富的内涵-它能够为在RFC 2828中所谓的消息认证提供支持。

  二、 签名元素结构

  实质上,XML签名使用XML语义描述一个数字签名。下列层次捕捉顶级的元素和属性以及它们之间的结构化关系。

<Signature ID?>
 <SignedInfo>
  <CanonicalizationMethod/>
   <SignatureMethod/>
   (<Reference URI? >
    (<Transforms>)?
    <DigestMethod>
    <DigestValue>
    </Reference>)+
   </SignedInfo>
 <SignatureValue>
 (<KeyInfo>)?
 (<Object ID?>)*
</Signature>
  在这个示例中,?表示零个或一个出现,+表示一个或多个出现,而*表示零或多个出现。在此,所有的元素和属性被定义于命名空间http://www.w3.org/2000/09/XMLdsig#。

  在此,Reference担当连接要签名的数据对象与一个XML签名之间的桥梁作用(通过URI属性)。一个应用程序选择这里的digest方法来计算一个数据对象的digest值,并且把这二者作为相应的Reference元素的一部分。

  对于digest方法,W3C建议实现对SHA-1的支持。而且,这种实现通常还支持其它交互式单向哈希函数-例如SHA-256,SHA-512和RIPEMD 160。

  实际上,我们很少直接从数据对象本身计算一个digest值。通常,一个应用程序需要首先对数据对象应用一些转换。例如,我们可以使用XPath来从一个XML文档中仅提取要害元素以实现签名;或者,我们也可能在使用XSLT经过一些转换后对一个XML文档进行签名。这样的转换是在Transforms元素中指定的-其中包含一个有关实现转换算法及其它相关信息的Transforms的有序列,当然也包括在相应的Reference元素之内。

  SignedInfo是数字签名算法实际应用的元素。该算法通过SignatureMethod元素捕捉;W3C建议中要求实现对DSA_SHA1,RSA_SHA1和HMAC_SHA1(由JSR-105所注释)的支持。前两个是基于公钥的,而HMAC是一种对称密钥密码学算法。 三、 签名过程

  在XML签名中,签名过程包括两个步骤。首先,它计算每一步的digest值以及确定要签名的每一个数据对象,并且把该值包括为相应的Reference元素的一部分。

上一篇:在目录中查找类位于哪个jar包中 人气:878
下一篇:与JBuilder2007的第一次亲密接触 人气:913
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐