admin 管理员组

文章数量: 1086019


2024年4月19日发(作者:linux是什么品牌喷码机)

第33卷第6期 

南昌大学学报(理科版) 

Vo1.33 No.6 

2009年12月 

Journal of Nanchang University(Natural Science) 

Dee.20o9 

文章编号:1006—0464(2009)06—0599—04 

种基于C#的XML加密方法的研究与实现 

高春晓,石永革,黄江 

(南昌大学信息工程学院,江西南昌330031) 

摘要:针对在Internet应用中,XML文档传输安全的重要性,研究并提出了一种基于c#.NET环境下XML加密的 

方案,使用XML加密机制来保证XML信息的安全性。通过研究XML加密的密钥交换方法及基本实现模式,将高 

级加密算法(AES)与目前广泛应用的公钥算法(RSA)相结合,提出了一种数据安全传输的解决方案,并给出了使 

用c#实现的部分关键代码。 

关键词:XML;安全;加密;高级加密算法;RSA公钥算法;c#.NET 

中图分类号:TP311 文献标识码:A 

可扩展标记语言XML(Extensible Markup Lan— 

密颗粒度的概念,即对每个XML文件可以加密: 

guage)是一种可以用来创建自己标记的标记语言, 

(1)整个文件;(2)文件中的元素;(3)文件中元素的 

由于其具有以下主要优点——良好的可扩展性、内 内容。还能对加密过的元素或内容进行再加密,即 

容与形式分离、遵循严格的语法要求、便于与不同系 

超级加密。这样我们就能够选择对文件内的不同信 

统之间信息的传输、具有较好的保值性等优点,从而 

息进行不同的加密处理。 

被广泛应用于btob、web服务、.net等领域。XML加 

本文提出的解决方案,其目的在于通过非对称 

密可以为需要结构化数据安全交换的应用程序提供 加密在不安全的区域安全地传输用于对称加密的密 

端到端的传输安全。 

钥,从而有效保证XML数据的安全传输。其中,非 

由于开始设计XML时没有过多地考虑它的安 

对称加密采用RSA算法,对称加密采用AES算法。 

全问题,并且XML是纯文本和自解释性的,网络上 1.1.1 对称加密算法对称性加密也称为密钥加 

任何人都能比较容易修改它,因此如何保证它的安 

密,是需要对加密和解密使用相同密钥的加密算法。 

全传输和验证就变得十分重要。同时,XML在电子 对称加密算法的特点是算法公开、计算量小、加密速 

商务和电子政务等领域有广泛的应用,只有解决了 度快、加密效率高。由此,对称性加密通常在消息发 

XML数据的安全问题,XML才能得到更广泛、更有 

送方需要加密大量数据时使用。在本文中使用AES 

效的应用。 

算法进行对称加密。总体来说,AES作为新一代的 

尽管JAVA是当前XML开发较常用的工具,但 数据加密标准汇聚了强安全性、高性能、高效率、易 

由于开发的许多应用系统和实际项目中采用了c}≠ 

用和灵活等优点。AES作为一种21世纪的对称密 

语言,而且相对于Java,C#可以于.NET语言编写的 

码新标准,正逐步取代DES。 

代码无缝交互,它的语法更加强大,因此研究如何利 

1.1.2非对称加密算法非对称加密算法的核心 

用C#语言实现XML加密和数据安全交换就具有较 

就是加密密钥不等于解密密钥,且无法从任意一个 

强的现实意义。 

密钥推导出另一个密钥,这样就大大加强了信息保 

1 基本原理 

护的力度。但该算法加密和解密花费时间长、速度 

慢,它不适合于对文件加密而只适用于对少量数据 

1.1算法思路 

进行加密。当前最著名、应用最广泛的公钥系统 

XML加密规范属于W3C(World Wide Web 

RSA是一个基于数论的非对称密码体制,是一种分 

Conso ̄ium)规范,指定了有关创建XML形式的加密 组密码体制。它的安全性是基于大整数因子分解的 

的格式和处理模型,规范了加密XML形式的数据。 困难性,而大整数因子分解问题是数学上的著名难 

XML加密与传统加密最大的区别是引入了加 

题,至今没有有效的方法予以解决,因此可以确保 

收稿日期:2009—06—20 

作者简介:高春晓(1984一),女,硕士生 

6o0・ 南昌大学学报(理科版) 2009年 

RSA算法的安全性。 

基于以上考虑,本方案用非对称加密RSA算法 

用RSA非对称加密算法加密所生成对称密钥K。 

(2)发送方利用AES对称加密算法,用所生成 

的对称密钥K加密XML数据,从而创建XML加密 

模型并替换原始待加密数据。其中,加密XML数据 

有3种加密类型:对整个文档加密,对元素加密,对 

元素内容进行加密。 

(3)生成加密的XML文档,并将该加密文档发 

送给接收方。 

(4)接收方收到加密文档后,进行对该XML文 

实现对称加密AES算法的对称密钥的传递,既保证 

了高安全强度,又避免了加密对象数量大而造成的 

效率低等缺点。作为公钥算法的典型代表,RSA算 

法是目前被研究和应用得最为广泛的公钥算法,经 

过长期的考验,该算法已被普遍认为是目前最优秀 

的公钥方案之一。AES算法作为DES算法的替代 

者应用非常广泛,得到了NIST的认可。AES相对于 

DES或者Triple—DES来说,具有速度快、安全性好 

档的析取,然后利用之前生成的密钥对中的私钥,借 

助RSA算法实现对对称密钥K的解密。 

(5)利用解密出的密钥K和AES算法对已加 

密的XML文档进行解密,从而得到最终解密后的 

XML文档。 

具体流程如图1所示。 

等特点,而且在硬件和软件实现上执行得很好。 

RSA与AES的结合,既保证了数据传输的良好安全 

性,同时又提高了处理效率,具有强大的可执行性。 

1.2算法流程 

(1)首先,接收方将生成的密钥对中的公钥传 

送给发送方,发送方接收到该公钥后,进行验证,并 

公钥 

发送方 

接收方 

生成对称密钥h l验证公钥 

加密的

ML 

加密整 

个文档 

元 

AES加密 

1 

 

私钥I● 肼苗异 称 

文档 l蟹查墅整查耍 l 

对称密钥Ki 瓣 

l解密已加密的l 

 XML文档 lI 

替换原始待加密数据1冀 ’ ll 早=广  

生成加密的XML文档 

附图XML加密、解密流程图 

2解决方案

2.1 AES的C#实现 

: Vemor・k蟛 bVec r,bVec 

Byte[]Cryptograph=null;// ̄11密后的密文 

Rijndael Aes=Rijndae1.Create();//创建对称 

加密类的实例 

2.1.1加密System.Security.Cryptography命名空 

间除了使用一个密钥,还使用一个初始化向量(IV, 

Initialization Vector),使得加密性更强。使用Sys— 

tem.Security.Cryptorgaphy命名空间可以对字节数 

组进行对称加密。 

//加密函数需要字节数组作为参数,把密钥和 

向量转换为字节数组 

Byte[]bKey=new Byte[32]; 

Array.Copy(Encoding.UTF8.GetBytes(Key.Pa- 

//开辟一块内存流 

MemoryStream Memory new MemoryStream() 

//把内存流对象包装成加密流对象 

//调用CreateEncryptor方法 

//创建CryptoStream对象,并将其指向数据流 

输出对象,来对读人数据流中的数据进行加密 

//通过传递CryptoStreamMode枚举来创建 

CryptoStream对象CryptoStream Encryptor=new 

CryptoStream(Memory,Aes.CreateEncryptor(bKey, 

dRight(bKey.Length)),bKey,bKey.Length); 

Byte『]bVector=new Byte[16]; 

Array.Copy(Encoding.UTF8.GetBytes(Vector. bVector),CryptoStreamMode.Write) 

第6期 高春晓等:一种基于c#的XML加密方法的研究与实现 ・601・ 

//明文数据写入加密流 

//调用CryptoStream的Write方法,实现加密, 

并传递要加密的字节数组的数据和字节数 

Eneryptor.Write(Data,0,Data.Length); 

Encryptor.FlushFinalBlock(); 

2.1.2解密//解密函数需要字节数组作为参数, 

把密钥和向量转换为字节数组 

Byte[]bKey=new Byte[32]; 

Array.Copy(Encoding.UTF8.GetBytes(Key.Pa- 

dRight(bKey.Length)),bKey,bKey.Length); 

Byte[]bVector=new Byte[16]; 

Array.Copy(Encoding.UTF8.GetBytes(Vector. 

PadRight(bVector.Length)),bVector,bVector. 

Length); 

Byte[]original=null;//解密后的明文 

Rijndael Aes=Rijndae1.Create();//创建对称 

加密类的实例 

//开辟一块内存流,存储密文 

//创建数据流对象以保存加密数据,并用包含 

加密数据的Data来初始化MemoryStream对象 

MemoryStream Memory new MemoryStream(Da— 

ta) 

//把内存流对象包装成加密流对象 

//创建解密器对象的实例 

//创建CryptoStream对象,将CryptoStreamMode 

设置为Read,以解密数据流对象中的数据 

CryptoStream Decryptor=new CryptoStream 

(Memory,Aes.CreateDecryptor(bKey,bVector), 

CryptoStreamMode.Read); 

//明文存储区 

//调用CryptoStream的Read方法,实现解密 

MemoryStream originalMemory new MemoryS— 

tream(); 

readBytes=Decryptor.Read(Buffer,0,Buffer. 

Length); 

originalMemory.Write(Buffer,0,readBytes); 

2.2 RSA的C群实现 

生成一个private key和public key,用Public 

Key加密,用Private key解密。 

2.2.1 生成一对keys//创建RSACryptoServi— 

ceProvider对象时,RSACryptoServiceProvider类创建 

了一个公钥/私钥对 

//创建并返回包含当前RSA对象的密钥的 

XML字符串,true表示同时包含RSA公钥和私钥 

//创建并返回包含当前RSA对象的密钥的 

XML字符串,false表示仅包含公钥 

stirng[]sKeys=new Stirng[2]; 

RSACryptoServieeProvider rsa=new RSACryp— 

toServiceProvider(); 

sKeys[0]=rsa.ToXmlString(ture); 

sKeys[1]=rsa.ToXmlString(false); 

2.2.2加密//创建RSACryptoServiceProvider对 

象 

//RSA..FromXmlString方法通过XML字符串 

中的密钥信息初始化RSA对象 

//将被加密数据转换为字节数组 

//RSACryptoServiceProvider对象的Enerypt方 

法使用不对称加密算法来加密数据 

RSACryptoServieeProvider rsa=new RSACryp— 

toServiceProvider(); 

string plaintext=sSource; 

rsa.FromXmlString(sPublicKey); 

byte[]cipherbytes; 

byte[]byteEn=rsa.Enerypt(Encoding.UTF8. 

GetBytes(”a”),false); 

cipherbytes=rsa.Enerypt(Encoding.UTF8.Get— 

Bytes(plaintext),false); 

2.2.3解密//创建RSACryptoServiceProvider对 

象 

//RSA.FromXmlString方法通过XML字符串中 

的密钥信息初始化RSA对象 

//将被解密数据转换为字节数组 

//RSACryptoServiceProvider对象的Encrypt方 

法使用不对称加密算法来解密数据 

RSACryptoServieeProvider rsa=new RSACryp— 

toServiceProvider(); 

rsa.FromXmlString(sPrivateKey); 

byte[]byteEn=rsa.Enerypt(Encoding.UTF8. 

GetBytes(”a”),false); 

3 结束语 

本文基于c#.NET平台提出了一种XML加密 

的方案。在此XML加密过程中,使用RSA及AES 

两种算法,把非对称加密的安全性和对称加密的快 

速性结合起来使用,保留了各自的长处,在整个数据 

传输过程中,通过非对称加密在不安全的区域安全 

地传输了用于对称加密的密钥,从而有效保证了 

XML数据的安全传输。 

南昌大学学报(理科版) 2009拄 

参考文献: 

于国良,陈哲,韩文报.XML加密[J].微计算机信 

息,2006,22:12—13. 

情报技术,2003,8:45—46. 

微软公司.面向.NET的Web应用程序设计[M].高等 

教育出版社,2004. 

乔加新.XML加密技术与XML签名技术的研究[J]. 

信息技术,2007,7:23. 

车葵,牛晓太,邢书涛.XML加密方法的研究与实现 

虞歌.XML加密及其在电子公文中的应用[J].计算 

机工程与设计,2007,2:935. 

耿建勇,鲁士文.基于XML加密规范的安全数据交换 

[J].计算机工程与设计,2008,10:5 180—5 183. 

的实现[J].计算机应用与软件,2005,2:99. 

叶晓彤.基于DOM的XML部分加密传输的c++实 

[9] 

http://www.wewil1.cn/n33279c66.aspx. 

现[J].计算机应用与软件,2004,11:111. 

[】O] 

http://hi.baidu.cora/aidfanfblog/iterr ̄1 ef88be2al di e 

丁振国,郑行健.XML加密在信息安全中的应用[J]. 

a1 m氆47724.htm】. 

Research and Implementation of a XML Encryption Based on C样 

GAO Chun—xiao,SHI Yong-ge,HUANG Jiang 

(College of Information Engineering,Nanchang University,Nanchang 33 ̄31,China) 

Abstract:For the importance of XML ifle transfer security in the application of Internet.this dissertation studies and 

puts forward a solution to C撑.NET—based XML encryption.which works with XML eneryption mechanisms to en— 

sure the security of XML messages.By studying the key exchange method and basic implementation mode of XML 

encryption,combining Advanced Encryption Standard(AES)with the widely used public key algorithm(RSA)at 

present,this dissertation puts forward a scheme for data security transmission,and gives crucial codes by C群. 

Key words:XML;Safety;Encryption;AES;RSA;C#.NET 

(上接第598页) 

Granular Computing Method Based on Access to Approximate Ontology 

YAO Xiao—kun,QIU Tao—rong,BAI Xiao-ming 

(Department of Computer Science and Technology,Nanchang University,Nanchang 33 ̄31,China) 

Abstract:Research on the approximate concept and the resulting approximate ontology generated is not only neces— 

sary,but its importance is growing.Based on granular computing theory and using information table as a domain on— 

tology of context,we given access to approximate concepts and generate approximate ontology data model,and pro— 

posed algorithm based on granular computing concepts to access approximate concept and generate approximate on— 

tology.An examples shows that the algorithm is effective. 

Key words:Information granules;granular computing;approximate ontology 


本文标签: 加密 密钥 数据 对称 算法