在xorencryption中没有为类型'char'和'integer'定义operator'xor'?

时间:2012-07-03 05:44:29

标签: vb.net

下面给出了加密字符串的程序。 我从下面的链接中获取了此代码并转换为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

我得到错误

  

“operator'xor'未定义类型'char'和'integer'”

我犯了错误?

1 个答案:

答案 0 :(得分:4)

基本上,VB不允许CharInteger之间的Xor,正如编译器告诉你的那样。 C#编译器自动将char提升为int,但VB编译器不会这样做(至少在这种情况下)。您需要首先明确地将字符转换为整数:

c = ChrW(AscW(c) Xor key)

强烈建议您不要对任何生产项目使用此“加密”(也称为混淆)。 .NET内置了大量加密算法 - 为什么不使用其中一种呢?注意上述方法的警告也不总是给出有效的XML字符。哎呀,它可以产生基本上无效的字符串,因为包含代理对的“一半”等。你应该对任何将字符数据视为任意数字的事情感到紧张。