Function DoXorEncrypt(ByRef msFileText As String, ByVal xorInt As Long) As String
        '本函数用于对msFileText中的字符串进行XOR 27操作,英文或汉字均作为一个字符来处理,
        '加密方调用该模块用于加密,解密方调用该模块用于解密。
        '使用Unicode函数AscW 、ChrW可正确处理所有汉字
        '使用ASC函数Asc 、Chr无法正确处理所有汉字        Dim intC As Long
        Dim intB As Long
        Dim lngI As Long
        Dim intTemp As Integer        intTemp = xorInt Mod 10        '由于一些能被10整除的数据作为异或值时会出错,所以对可以被10整除的数字加1
        If (xorInt Mod 10) = 0 Then
            xorInt = xorInt + 1
        End If        For lngI = 1 To Len(msFileText)
            intC = AscW(Mid(msFileText, lngI, 1))
            '选用<=127可正确处理汉字,ChrW(n):n 有一个范围
            Mid(msFileText, lngI, 1) = ChrW(intC Xor xorInt)
        Next lngI
    End Function

解决方案 »

  1.   

    这是一个在线转化C#代码的网站
    http://www.developerfusion.com/utilities/convertvbtocsharp.aspx
      

  2.   

    string DoXorEncrypt(ref string msFileText, long xorInt) 

     long intC; 
     long intB; 
     long lngI; 
     int intTemp; 
     intTemp = xorInt % 10; 
     if ((xorInt % 10) == 0) { 
       xorInt = xorInt + 1; 
     } 
     for (int lngI = 1; lngI <= Len(msFileText); lngI++) { 
       intC = AscW(Mid(msFileText, lngI, 1)); 
       Mid(msFileText, lngI, 1) = ChrW(intC ^ xorInt); 
     } 
    }
      

  3.   

    zhanglizhao(醉猫) 给的不行啊.那个自动转换的网站,转的不是很好
      

  4.   

    把代码改了一下.
    public string DoXorEncrypt(string msFileText, int xorInt) 

    int intC; 

    long intTemp; 
    string result="";
    intTemp = xorInt % 10; 
    if ((xorInt % 10) == 0) 

    xorInt = xorInt + 1; 

    for (int i = 0; i < msFileText.Length; i++) 

    intC = Microsoft.VisualBasic.Strings.AscW(msFileText[i]); 
    result += Microsoft.VisualBasic.Strings.ChrW(intC ^ xorInt).ToString(); 

    return result;
    }
      

  5.   

    别忘了引用 Microsoft.VisualBasic
      

  6.   

    添加对Microsoft VisualBasic runtime.dll的引用
    string DoXorEncrypt(ref string msFileText, long xorInt) 

     long intC; 
     long intB; 
     long lngI; 
     int intTemp; 
     intTemp = xorInt % 10; 
     if ((xorInt % 10) == 0) { 
       xorInt = xorInt + 1; 
     } 
     for (int lngI = 1; lngI <= Microsoft.VisualBasic.Strings.Len(msFileText); lngI++) { 
       intC = Microsoft.VisualBasic.Strings.AscW(Microsoft.VisualBasic.Strings.Mid(msFileText, lngI, 1)); 
       Microsoft.VisualBasic.Strings.Mid(msFileText, lngI, 1) = Microsoft.VisualBasic.Strings.ChrW(intC ^ xorInt); 
     } 
    }
      

  7.   

    string DoXorEncrypt(ref string msFileText, long xorInt)
    {
         long intC;
         long intB;
         long lngI;
         int intTemp;
         intTemp = xorInt % 10;
         if ((xorInt % 10) == 0)
         {
          xorInt = xorInt + 1;
         }
         for (lngI = 1; lngI <= msFileText.Length; lngI++)
         {
    intC = Strings.AscW(msFileText.Substring(lngI - 1, 1));
    StringType.MidStmtStr(ref msFileText, lngI, 1, Strings.ChrW(intC ^ orInt));
         }
    }