For i = 1 To Len(strSource)
strChar = Mid(strSource, i, 1)
bLowData = AscB(MidB(strChar, 1, 1)) Xor key1
bHigData = AscB(MidB(strChar, 2, 1)) Xor key2
strEncrypt = strEncrypt & ChrB(bLowData) & ChrB(bHigData)
Next i
------解决思路----------------------
Dim b1() As Byte
Dim en As New System.Text.UnicodeEncoding
b1 = en.GetBytes(strSource)
For i As Int32 = 0 To b1.Length-1 Step 2
b1(i) = b1(i) Xor key1
b1(i + 1) = b1(i + 1) Xor key2
Next
strEncrypt = en.GetString(b1)
------解决思路----------------------
不能完全对等转换。
原先 VB6 中用字符串存放加密结果就不是一种严密的设计,加密后编码映射到 U+0000~U+FFFF 全体范围。
而 VB.Net 中,UnicodeEncoding.GetString() 并不支持编码全体范围,最终结果可能会不一致的。
参考 非常奇怪的字符串转换的问题 #8