我需要加密一個XML文件,將它發送到另一個位置並在那裏進行解密。正如你從下面的代碼可以看到的,我使用了相同的密鑰,但它不起作用(現在我只是使用兩個本地文件)。在單獨的文件中對XML進行加密/解密
我得到的錯誤如下:
在Decrypt.aspx此行填充是無效的不能刪除。
:昏暗xReader作爲XmlTextReader的
我想這可能是在實際的加密階段導致錯誤例如,文件沒有正確保存。
Encrypt.aspx
Dim rijnAlg As RijndaelManaged
rijnAlg = RijndaelManaged.Create()
rijnAlg.Key = {118, 123, 23, 17, 161, 152, 35, 68, 126, 213, 16, 115, 68, 217, 58, 108, 56, 218, 5, 78, 28, 128, 113, 208, 61, 56, 10, 87, 187, 162, 233, 38}
rijnAlg.IV = {33, 241, 14, 16, 103, 18, 14, 248, 4, 54, 18, 5, 60, 76, 16, 191}
Dim encryptor As ICryptoTransform
encryptor = rijnAlg.CreateEncryptor(rijnAlg.Key, rijnAlg.IV)
Dim wStream As FileStream
wStream = File.Open("C:\test.xml", FileMode.Create)
Dim cStream As CryptoStream
cStream = New CryptoStream(wStream, encryptor, CryptoStreamMode.Write)
Dim sWriter As StreamWriter
sWriter = New StreamWriter(cStream)
XMLDoc.Save(sWriter)
'Clear memory'
wStream.Flush()
wStream.Close()
Decrypt.aspx
Dim rijnAlg As RijndaelManaged
rijnAlg = RijndaelManaged.Create()
rijnAlg.Key = {118, 123, 23, 17, 161, 152, 35, 68, 126, 213, 16, 115, 68, 217, 58, 108, 56, 218, 5, 78, 28, 128, 113, 208, 61, 56, 10, 87, 187, 162, 233, 38}
rijnAlg.IV = {33, 241, 14, 16, 103, 18, 14, 248, 4, 54, 18, 5, 60, 76, 16, 191}
Dim decryptor As ICryptoTransform
decryptor = rijnAlg.CreateDecryptor(rijnAlg.Key, rijnAlg.IV)
Response.Write(rijnAlg.Key)
Response.Write(rijnAlg.IV)
Dim rStream As FileStream
rStream = File.OpenRead("C:\test.xml")
Dim cStream As CryptoStream
cStream = New CryptoStream(rStream, decryptor, CryptoStreamMode.Read)
Dim xReader As XmlTextReader
xReader = New XmlTextReader(cStream)
Dim xDoc As XDocument
xDoc = XDocument.Load(xReader)
xDoc.Save("C:\test.xml")
和可能感興趣的緣故,這裏是我使用的XML創建代碼:
Dim XMLDoc As XDocument
XMLDoc = New XDocument(
New XDeclaration("1.0", "utf-8", "yes"),
New XElement("user",
New XElement("details",
New XElement("firstname", Firstname.Text),
New XElement("surname", Lastname.Text)
)
)
)
XMLDoc.Save("C:\test.xml")
它不會讓我關閉其他流雖然。我會嘗試使用方法,並讓你知道我如何去。謝謝。 – 2011-04-27 06:41:12
@ user718341:你是什麼意思它「不會讓你」?我的猜測是,你試圖以錯誤的順序關閉它們,並且他們試圖刷新到一個關閉的FileStream ... – 2011-04-27 06:43:34
「wouldnt let me」=有錯誤。不,我改變了順序 - 我只是假設它意味着關閉最後一個被分解到其餘部分的順序。 – 2011-04-27 06:46:59