0

以下は、文字列を暗号化するためのプログラムです。以下のリンクからこのコードを取得し、vb.net に変換しました。 http://www.eggheadcafe.com/tutorials/csharp/8b53894c-a889-4914-8c46-122980cc44ae/simple-xor-encryption.aspx . これにより、単純な xor 暗号化を使用して文字列が変換されます。

Namespace SimpleXOREncryption
    Public NotInheritable Class EncryptorDecryptor
        Private Sub New()
        End Sub
        Public Shared key As Integer = 129

        Public Shared Function EncryptDecrypt(ByVal textToEncrypt As String) As String
            Dim inSb As New StringBuilder(textToEncrypt)
            Dim outSb As New StringBuilder(textToEncrypt.Length)
            Dim c As Char
            For i As Integer = 0 To textToEncrypt.Length - 1
                c = inSb(i)
                c = ChrW(c Xor key)
                outSb.Append(c)
            Next
            Return outSb.ToString()
        End Function
    End Class
End Namespace

エラーが発生しています

「演算子 'xor' は型 'char' および 'integer' に対して定義されていません」

どこで間違えた?

4

1 に答える 1

4

基本的に、コンパイラが指示しているように、VBはとXorの間Charを許可しません。IntegerC#コンパイラは自動的ににプロモートcharしますintが、VBコンパイラはこれを行いません(少なくともこの場合)。最初に、文字を明示的に整数に変換する必要があります。

c = ChrW(AscW(c) Xor key)

ただし、この「暗号化」(難読化)を本番プロジェクトに使用しないことを強くお勧めします。.NETには、多くの暗号化アルゴリズムが組み込まれています。そのうちの1つを使用してみませんか?上記のアプローチに関する警告にも注意してください。また、常に有効なXML文字が提供されるとは限りません。ちなみに、サロゲートペアの「半分」などが含まれているために基本的に無効な文字列が生成される可能性があります。文字データを任意の数値として扱うものには注意が必要です。

于 2012-07-03T06:06:05.843 に答える