Addcontact.asp和listcontact.asp中都包括相当数量的与XML相关的代码,用来存取和读contacts.xml文档。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)Lib_exml.asp包含这个应用程序使用的两个关键函数,它们是OpenEXML()和 SaveEXML()。这里列出它们的详细内容。
首先声明函数,用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 fileFunction 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 代码打开它,处理差错然后删除解密的文件:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)'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 = strResultEnd Function