基于WCF的DES数据加密设计与实现
2022-03-11冯菁李凌
冯菁 李凌
摘要:WCF服务技术与DES算法相结合,通过对微软WCF服务技术分析及原理介绍,对WCF服务的设计、配置、使用DES类对WEB中数据实现加密与解密。.NET Framework封装了DES加密类,为数据加密提供方便,DES算法高效可行,再利用WCF面向服务编程技术优点,应用WCF框架提供高效实用的DES加密解密服务,达到Web中数据加密与解密目的。
关键词:.NET Framework;WCF技术;DES算法
中图分类号:TP311 文獻标识码:A
ASP.NET是首选Web应用程序开发技术之一,可开发的WEB动态网站应用程序,集中了页面、UI控件、代码模块和服务组成 [1]。很多企事业单位使用.NET开发建设本单位的门户网站。网络中数据安全一直是技术上关注的要点,互联网自由开放的环境给人们工作生活带来优势,若是网络中数据处理不好,会给社会、用户带来巨大的危害,造成不可挽回的损失。常用的网站数据安全问题有表单数据、数据库访问安全、传递的消息、身份认证等。为了解决上述问题可以对网络中使用的数据进行加密,防止窃取或篡改,来保障WEB信息安全。下面举例讨论应用WCF技术的面向服务架构,对数据加密来实现安全访问。
1 WCF与DES加密类介绍
1.1 WCF服务
WCF(Windows Communication Foundation)直译视窗沟通框架,是微软公司推出的支持数据通信,基于Windows平台开发的应用框架,它是连接多客户端与多应用服务器的中间通信技术,WCF不依赖某协议,支持多种通信协议,是真正的面向Web Service的通信接口。微软提议的“软件就是服务”的思想,换个说法,WCF是基于面向服务架构(SOA),建立相互可操作的平台,只需遵照统一的标准,只需关注模块自身的服务进行编程,并把提供的功能以接口的形式存在,在内通过描述语言定义功能,对外以接口的形式主动公开,各类应用程序可以发现服务并调用。WCF是微软分布式应用程序开发技术的集大成者,还自带了安全性模块、事务性的模块等,为构建安全高效的事务性服务提供了统一框架[2],这种开发分布式应用框架,解决了包括安全、可信赖、互操作、跨平台通信等各种需求[3]。
从上面的介绍,设计WEB站点,它可以提供给其他站点服务或资源,对WEB中的数据进行加密与解密的操作,这就是WCF服务。应用程序能发现WCF服务、调用服务,完成数据加密工作。这些应用程序可以是Java、.NET 多种跨平台的,并且通过多种协议来访问 WCF,这个方法实用可行。
1.2 定义服务
WCF规定双方沟通的协议,描述了供客户端调用的服务规范,以接口的方式来体现,而这些接口的子类被具体实现,并提供相应的功能服务。
[ServiceContract]标记接口、类来定义服务,[OperationContract]标记定义服务提供的方法。 [ServiceContract]标记接口或类,该接口或类就会被客户其他应用程序端发现、被远程调用。仅使用[ServiceContract]还不够,还需要加上[OperationContract]标记,表明在此接口成员的方法,继承父接口的子类重写该成员方法后,被外界所发现并远程调用[4]。
1.3 .NET提供的加密技术
System.Web.Security与System.Security.Cryptography,ASP.NET的两个名字空间内有多个加密类、签名相关的类;提供多种加密算法,还有安全的数据编码、解码方法。.NET Framework 提供对应的常用加密算法的类为:DES:DESCryptoServiceProvider、RSA:RSACryptoServiceProvider、MD5:MD5CryptoServiceProvider等[5]。
DES(Data Encryption Standard)数据加密标准,使用者非常容易理解去运用,它以加密密钥为基础,实现起来经济有效,还能提供高质量的数据保护,其破解难度高,其花费高于所得利益,可适用于多种场合。ASP.NET提供的加密解密DES算法类DESCryptoServiceProvider,加密方法CreateEncryptor(),解密方法CreateDecryptor()。根据提供的标准DES对称加密类与方法,避免去学习理解复杂的密码学原理,去设计实现一个WCF服务能够对数据进行加密解密。
1.4 ASP.NET页面安全应用
为了保证WEB页面数据的安全,需要对计算机网络上使用的数据进行加密。WEB开发应用中连接数据库字符串、客户端与WEB服务器交互的表单数据、验证合法用户等,这些都会存在信息安全问题。计算机网络中传输的关键信息,被破坏、窃取、篡改。为了保障这些WEB使用数据安全性,一些涉及隐私数据、用户登录中密码字符串等,需要加密处理,应用所定义的加密方法先对字符串进行加密处理,达到保密、保障数据完整性等目的;其后进行下一步操作,如上传服务器、页面之间传值、写入数据库等,使用时根据需要,运用解密方法还原数据,信息由密文变明文,起到对数据保护的作用。
2 比较ASP.NET中数据加密方法
随着互联网经济和Web 门户网站在各行各业的普及,快捷地创新开发部署运行WEB服务及应用程序平台,软件复用技术提到新的高度。.NET中已有的加密和解密类,让程序员的工作变得简单、高效。其他加密和解密算法的应用将越来越广泛,可以使用下面三种方式设计加密功能:直接编码;面向对象、组件;面向服务。
直接编码方式,如果应用数据加密的次数很少,仅在需要使用加密的地方,直接编码应用加密类及相应方法、属性,这种方式开发效率和调试的工作量不比其他方式少,维护起来麻烦;面向对象方式,在直接编码基础上,通过代码复用改进后,设计公共类,在类中定义加密功能方法,解密方法,通过多次调用这些方法实现数据加密;或是根据面向对象的特性,继承与多态,设计父类、接口,继承它们的派生类来实现加密解密工作;这两种虽能体现面向对象语言的优势、代码复用、对象及组件复用。但实现跨平台、跨语言的复用有难度,程序耦合度高,效率低;为解决上述问题可以提供一种服务接口,即WCF服务,提供给客户端加密解密服务。
WCF的优势不言而喻,创建WCF面向服务应用程序性能优、灵活方便,根据以上实现及分析,把常用功能设计WCF服务供调用,如实现数据加密与解密功能,保证页面数据安全,具有很实用的价值与意义。WCF可使用多种协议标准如HTTP、TCP等,可以跨平台及进程互操作;安全可信赖,高兼容性。发布后的WCF 服务,可跨操作系统,在跨语言的环境下均可被調用。 互联网上也有很多常用的Web服务站点,与人们生活息息相关,如天气预报、手机属性查询、查询时刻表等。
3 设计WCF服务
3.1 创建WCF服务
使用Visual Studio 2013开发工具,网站添加WCF服务,命名DESService,生成多个文件, IDESService.cs父接口、DESService.cs继承接口并实现父接口中的加密方法 、激活服务文件DESService.svc,网站配置文件 Web.Config里,自动生成相关WCF配置代码。如图1所示。
3.2 WCF服务中实现的数据加密方法
具体主要代码可参见WCF服务类DESService中的EncryptDesWCF(…)方法,实现对文本的加密。
3.3 在客户端调用WCF服务
发布网站或是发布WCF,*.svc文件设为起始页,VS环境下添加服务引用,在地址里填写IIS上的WCF服务的URL,供其他程序远程调用。图3所示发现服务,此处为本机:http://127.0.0.1/fweb2016/DESService.svc,点击“转到”按钮,发现服务,在名称空间处填写DESServiceReference,空间中 DESServiceClient类并且实例化。
在网站下新建Web页面测试调用WCF服务,实现字符串加密,加密字符串与原文比照如图4所示:
通过对字符串进行加密,可应用于传输表单中保密数据、数据库中存储的隐私信息、密码字段等。开发相对应的解密服务进行解密,实现数据的安全使用。
4 结束语
ASP.NET建设动态WEB站点,结合WCF服务与DES加密算法的这种面向服务的系统构架应用,可共享分布式异构信息资源,在站点上提供服务,提高了使用页面数据加密解密的效率,用ASP.NET做动态网站技术,拥有大量的控件、类库,能简化开发步骤,代码数减少70%左右,是构建IT新系统的主要思路。WCF服务充分利用互联网资源,使用的代码复用率高,提升了程序开发效率,在当前的计算机网络应用开发中具有很大的优势。一般的企事业单位对外门户网站中页面安全级别较低,即可以使用WCF服务提供的数据加密解密功能。对于安全级别要求比较高的数据,还可以应用WCF服务提供的认证等多项服务。
参考文献:
[1] 刘友生.基于构件的ASP.NET(C#)网站开发教程[M].北京:化学工业出版社,2012.
[2] 韩旭,王海波,柳克俊.基于.NET Framework WCF的面向服务SOA中间件设计[J].小型微型计算机系统,2010(12):2359-2363.
[3] 纪洲鹏,赵斐斐,耿强,等.基于WCF多层架构的M-Commerce系统设计与应用[J].兵器装备工程学报,2017,38(5):87-93.
[4] 刘玮玮.WCF技术SOA架构在成绩管理系统中的应用[J].价值工程,2012,31(21):205-206.
[5] 冯菁.ASP.NET中DES算法加密与解密的应用[J].陕西理工学院学报(自然科学版),2017,33(2):64-68.
【通联编辑:谢媛媛】
收稿日期:2021-09-16
基金项目:高等学校省级质量工程项目省级示范课程ASP.NET开发技术(项目编号:2020SJJXSFK2179);安徽省高等学校质量工程项目软件技术教学团队(项目编号:2018jxtd081);省级项目:计算机应用技术专业群
作者简介:冯菁(1974—),上海人,副教授,系统分析师,硕士,研究方向为软件技术、Web应用;李凌(1971—),安徽萧县人,教授,硕士,研究方向为图像处理、信息处理。
3970500338204