您所在的位置: 首页 > 网络安全 > 黑客攻防 > 加密解密 >

加密的XML

http://netsecurity.51cto.com  2005-11-02 11:52    网络  我要评论(0)
  • 摘要:在加密的XML (EXML) 中,以一个简单的contacts.xml 文件为例。
  • 标签:XML
在加密的XML (EXML) 中,以一个简单的contacts.xml 文件为例。在这个例子中大多数的关联文件都很简单,在下表中做一个简要介绍。集中介绍2个ASP函数,他们用来访问EXML 函数。 它们是OpenEXML()和 SaveEXML(), 存储在lib_exml.asp 包含文件中(如果是在产品商业环境中使用的话,应该被放在一个COM组件中)。
 
文件名 描述
Addcontact.asp 这个文件用来向 EXML文件中增加新的联系。
Contacts.xml 这个文档用来存储联系数据,作为一个加密的文件存储在硬盘驱动器上。
Contacts.xsl 这个stylesheet被listcontacts.asp用来显示contacts.xml的内容。
Default.asp 是一个简单的HTML文件,有到addcontact.asp和listcontacts.asp的链接。
Lib_exml.asp 一个ASP包含文件,包含用来存取加密XML文档的两个函数,被addcontact.asp 和listcontacts.asp所包含。
Listcontacts.asp 一个简单的 ASP页面,用来显示contacts.xml的内容。

Addcontact.asp和listcontact.asp中都包括相当数量的与XML相关的代码,用来存取和读contacts.xml文档。

Lib_exml.asp包含这个应用程序使用的两个关键函数,它们是OpenEXML()和 SaveEXML()。这里列出它们的详细内容。

OpenEXML()

首先声明函数,用dim声明变量,并例示我们需要的对象:

'Returns strResult as String, "" if successful
'Returns xmldom object in xmldom parameter
'Takes filepath as a relative path to the encrypted XML file
'Takes password as the password to use to decrypt the EXML file
Function OpenEXML(xmldom, filepath, password)
   Dim CM
   Dim Context
   Dim key
   Dim objXML
   Dim objFSO
   Dim clearfile
   Dim strResult

   'Instantiate Objects
   Set CM = Server.CreateObject("Persits.CryptoManager")
   Set Context = CM.OpenContext("mycontainer", True)
   Set objXML = Server.CreateObject("Microsoft.XMLDOM")
   Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

然后,我们将提供的文件名解密到一个临时文件中,这个文件在最后将要删除。注意由于系统上有这个明码文件,即使很简短,我们的系统安全也有了一个漏洞。在样本应用程序中的这些函数的目的是概念上的一个安全保证,但并不是一个完全的安全文件管理应用程序。

  strResult = ""
   clearfile = Server.MapPath(filepath & ".clear")

   'Get cryptographic key
   Set key = Context.GenerateKeyFromPassword(password, calgSHA, calgRC4, 40) 
   key.DecryptFile Server.MapPath(filepath), clearfile

现在我们正在使用40位的密码系统,如果你的机器上安装了适当的API,那么你可以使用更强大的密码系统。简单地说,如果你有IE的128位安全升级,你就可以通过AspEncrypt使用128位的密码 系统。

存储了加密文件后,我们用标准XMLDOM 代码打开它,处理差错然后删除解密的文件:

  'Processor should validate this document
   objXML.validateOnParse=True
   objXML.async = false

   'Load the decrypted file into an XML Document
   objXML.load clearfile
   If Err.Number <> 0 Then
      strResult = strResult & "Error loading " & clearfile _
                  & " into XML object.<BR>"
      strResult = strResult & Err.Number & ": " & Err.Description & "<BR>"
      Exit Function
   End If

   'Delete the decrypted file
   objFSO.DeleteFile clearfile, True
   If Err.Number <> 0 Then
      strResult = strResult & "Cannot delete file '" & clearfile _
                  & "'" & "<BR>"
      strResult = strResult & Err.Number & ": " & Err.Description & "<BR>"
      Exit Function
   End If

最后,我们清除对象,结束函数。XML文档在xmldom 参数中被返回调用它的程序。如果有错误,就作为函数的返回字符串报告,如果操作成功的话这个字符串是个空字符串。

  'Clean up objects
   Set CM = Nothing
   Set Context = Nothing
   Set Key = Nothing
   Set objFSO = Nothing

   If Err <> 0 Then
      strResult = strResult & Err.Number & ": " & Err.Description & "<BR>"
   End If

   Set xmldom = objXML
   OpenEXML = strResult
End Function

文档格式标准开战 OOXML成国际标准
XML可扩展标识语言详解
如何有效提升企业安全审计应用水平
如何有效防御SQL注入攻击
Web安全云时代
 
 验证码: (点击刷新验证码)   匿名发表
  • 网络工程师考试案例动手实验营

  • 作者:郭春柱
  • 本书依据2009年版《网络工程师考试大纲》的考核要求,深入研究了历年网络工程师考试试题的命题风格和试题结构,对考查的知识点..
Copyright©2005-2008 51CTO.COM 版权所有