我在写一个Vb.Net应用程序,它从PHP服务器读取加密的XML文件。我使用的是在这里找到的代码片段:解析来自解密字符串的XML文档
PHP Encryption & VB.net Decryption
专门理查德Varno的答案和代码。我可以将PHP服务器上的原始XML文件与VB.Net上的解密版本进行比较,它们是相同的。
问题是,当我将解密版本加载到Vb.Net中的XML文档中时,我只是得到一个空文档。
如果我从PHP服务器加载未加密的版本,那很好。我看不出两者之间有什么明显的区别,就是那个已经被加密然后解密了。两者都是字符串,而且都是Gzip,所以为什么这不起作用?
这里是我的代码在未加密的字符串为:
Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(lookupUrl)
' Tell the server that we want it compressed
request.AutomaticDecompression = DecompressionMethods.GZip
request.Timeout = 3000 ' Set 3 second timeout
' Parse the contents from the response to a stream object
stream = response.GetResponseStream()
' Create a reader for the stream object
Dim reader As New StreamReader(stream)
' Read from the stream object using the reader, put the encrypted contents in a string
Dim contents As String = reader.ReadToEnd()
' Put de-encrypted contents into another string
Dim decrypted As String = ""
' Create a new, empty XML document
Dim document As New System.Xml.XmlDocument()
Console.WriteLine("Received: " & contents)
' De-encrypt the data from the response from the server
decrypted = DecryptRJ256(Globals.sKy, Globals.sIV, contents)
Console.WriteLine("Decrypted: " & decrypted)
' Load the contents into the XML document
document.LoadXml(contents)
Dim nodes As XmlNodeList = document.DocumentElement.SelectNodes("//results/Node1")
现在上述作品,但如果我更换
document.LoadXml(contents)
:
document.LoadXml(decrypted)
我的XML文件是空的。
基于这个信息,我不得不猜测你的xml实际上并没有被加密。什么是你写的输出'“收到:”&内容)'? – Crowcoder
它被加密。我不能发布这一切,因为它是一个评论太长,但它开始:l4QiwAAs9m/ZEetl4fsXTvBC2Y/PFtI4WEteGADcHlGHcqlr5C5N5AuVAv97bWvAqVAvLBWVDMXg6dDMNJAdDZg95soIZ/hAVkYGV4IvQHZo2emg + TVz160p6ZiW26mL3uvZOTuT722CbECIm3y4u /解密它给我生成服务器的XML。 –
我不熟悉'DecryptRJ256'。它必须改变第三个参数('contents'),这是'LoadXml(contents)'的唯一方法。 DecryptRJ256的返回值是多少? – Crowcoder