加密的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
xml加密XML Encryption)是w3c加密xml的标准。这个加密过程包括加密xml文档的元素及其子元素,通过加密xml的初始内容将被替换,但其xml格式仍然被完好的保留。 介绍 我们有3个加密xml的方法 1、仅仅使用对称加密的方法加密xml 这种加密方法只使用一个密钥,也就是说无论是加密xml还是解密xml都使用一个相同的密钥。因为这个密钥不会在被加密xml中保存,所以我们需要在加密和解密的过程中加载这个密钥并保护它不被窃取。 2、使用对称加密和非对称加密相结合的方法来加密xml 这种方法需要一个用于加密数据的对称密钥和一个用于保护这个对称密钥的非对称密钥。被加密的对称密钥和被加密的数据一起保存在xml文档中。当用私有非对称密钥解密密钥的时候要用公开非对称密钥对密钥进行加密。 本文就将使用这种方法。想学到其他更多的方法请参看MSDN等到更多的信息。 (译者注:非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。) 3、使用X.509加密xml,这种方法是用X.509作为非对称密钥,它由诸如VeriSign之类的第三方提供。 方法 不管xml加密是如何完成的,保存加密数据总是用两种方法之一。 1、加密后所有的元素都被命名为 2、加密后只有数据被替换,而元素名称仍然是可读的,不会发生变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值