当前位置: 代码迷 >> VB Dotnet >> ( AscB\ChrB) 一段VB代码,帮转为VS2008 vb.net 多谢200分
  详细解决方案

( AscB\ChrB) 一段VB代码,帮转为VS2008 vb.net 多谢200分

热度:76   发布时间:2016-04-25 02:04:41.0
( AscB\ChrB) 一段VB代码,帮转为VS2008 vb.net 谢谢200分

        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
  相关解决方案