你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
XML电子病历的加密(六)
 

5 程序实现

自从XML数字签名的规范发布以来,许多机构都对其进行深入研究并提供了解决方案,同时XML加密的规范也已经成型。但大多数签名与加密是基于Java平台的,包括IBMNEC的签名库。为了打破Java“一统天下”的局面,本文采用C#语言在Visual Studio.Net 2003环境下实现XML电子病历的加密与签名。

微软公司在其.NET 2003平台中改进了XML的内核结构,对XML实现了完全的内部支持,可以使用其类库来编程。

5.1 XML Schema 检验的实现

.NET Framework中,与XML Schema相关的类在 System.Xml.Schema下。

XmlTextReader reader = new XmlTextReader(flieName);

XmlValidatingReader objXValRead = new

XmlValidatingReader(reader);

objXValRead.ValidationType = ValidationType.Schema;

while(objXValRead.Read()){}

return true;

如果While语句为真,说明XML文档的结构符合Shema的描述。

5.2 XML加密的实现

.NET Framework 中,与XML 加密相关的类集中在System.Security.Cryptography System.xml命名空间下,所以程序必须包含这两个命名空间。

步骤1: 生成RSA密钥对

利用.NET Framework下的Cryptography.RSA类来生成RSA非对称密钥,并分别将私钥与公钥保存为XML文档:

RSA Key = RSA.Create();

strPrivateKeyXML = Key.ToXmlString(true);

srrPublicKeyXML = Key.ToXmlString(false);

XmlDocument privateKeyXML,,publicKeyXML = new XmlDocument();

privateKeyXML.LoadXml(strPrivateKeyXML);

publicKeyXML.LoadXml(srrPublicKeyXML);

步骤2 : 通过Xpath语句判断加密次数,逐个加密:

nodes = doc.SelectNodes(strXpath);

nodeCount = nodes.Count;

for(int i=0;i<nodeCount;i++)

    {

     XmlNode currentNode = nodes.Item(i);

// EncrypXMLString方法是加密的具体实现

     XmlElement xmlEncryptElement =

EncrypXMLString(currentNode.InnerXml,strKeyName);

    }

通过Xpath语句可能找到多个节点,下面的步骤介绍EncrypXMLString方法的内容。
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089