1

VBで書かれたデータを暗号化するアプリケーションがあります。同じデータを使用する別のアプリケーションがあります。暗号化コードは同じですが、場合によっては異なる結果を返します。以下は、VBおよびC#の暗号化コードです。

===================================VBコード============= ====================

Dim s1 As String = ""
Dim i As Integer

If value = 0 Then value = 52

For i = 0 To s.Length - 1
   s1 += Chr(Asc(s.Substring(i, 1)) Xor value)
Next

Return s1

=================================== C#コード============= ====================

string Result = ""; 

int i = 0;

   try
   {
    if (value == 0)
        value = 52;

    char[] chars = s.ToCharArray();

    for (i = 0; i <= chars.Length - 1; i++)
    {
        Result += (char)((int)(chars[i]) ^ value);
    }


}
catch (Exception ex)
{
    MessageBox.Show(ex.Message, "Error");
}

return Result;
4

3 に答える 3

4

VB.NET の Chr() および Asc() 関数は、Visual Basic の初期バージョンで文字を処理する方法と互換性のあるレガシー関数です。これらは、システム コード ページで 8 ビットのエンコードを想定しています。代わりに、Unicode 互換の ChrW() および AscW() 関数を使用してください。または、VB.NET コードと同じ結果を生成するために C# コードが必要な場合は、Encoding.Default.GetBytes() を使用します。

于 2011-12-09T13:48:37.973 に答える
0

この VB コードを試してください:

Dim Result As String = ""

Dim i As Integer = 0

Try
    If value = 0 Then
        value = 52
    End If

    Dim chars As Char() = s.ToCharArray()

    For i = 0 To chars.Length - 1
        Result += CChar(CInt(chars(i)) Xor value)


    Next
Catch ex As Exception
    MessageBox.Show(ex.Message, "Error")
End Try

Return Result
于 2011-12-09T13:46:20.203 に答える