加密的XML (轉)

worldblog發表於2007-12-04
加密的XML (轉)[@more@]

 

   在加密的XML (EXML) 例子中,我只了一個簡單的contacts.xml 。在這個例子中大多數的關聯 檔案都很簡單,在下表中做一個簡要介紹。我將集中介紹2個,他們用來訪問EXML 函式。 它們是OpenEXML()和 SaveEXML(), 在lib_exml.asp 包含檔案中(如果是在產品商業環境中使用的話,應該被放在一個COM中)。

檔名描述 Addcontact.asp 這個檔案用來向 EXML檔案中增加新的聯絡。 Contacts.xml 這個文件用來儲存聯絡資料,作為一個加密的檔案儲存在器上。 Contacts. 這個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 succesul 'Returns xml in xmldom parameter 'Takes filepath as a relative path to the encrypted XML file 'Takes pass as the password to use to decrypt the EXML file Function OpenEXML(xmldom, filepath, password) Dim CM Dim Context Dim key Dim objXML Dim obj Dim clearfile Dim strResult 'Instantiate Objects Set CM = Server.CreateObject("Persits.CryptoManager") Set Context = CM.OpenContext("mycontainer", True) Set objXML = Server.CreateObject(".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位的密碼系統,如果你的機器上了適當的,那麼你可以使用更強大的密碼系統。簡單地說,如果你有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.
" strResult = strResult & Err.Number & ": " & Err.Description & "
" Exit Function End If 'Delete the decrypted file objFSO.DeleteFile clearfile, True If Err.Number <> 0 Then strResult = strResult & "Cannot delete file '" & clearfile _ & "'" & "
" strResult = strResult & Err.Number & ": " & Err.Description & "
" 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 & "
" End If Set xmldom = objXML OpenEXML = strResult End Function


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988487/,如需轉載,請註明出處,否則將追究法律責任。

相關文章