0

下面给出的是用于加密字符串的程序。我从下面的链接中获取了这段代码并转换为 vb.net。 http://www.eggheadcafe.com/tutorials/csharp/8b53894c-a889-4914-8c46-122980cc44ae/simple-xor-encryption.aspx。这将使用简单的异或加密转换字符串。

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

我收到错误

“未为类型 'char' 和 'integer' 定义运算符 'xor'”

我在哪里犯错了?

4

1 回答 1

4

基本上,VB 不允许Xorbetween Charand Integer,正如编译器告诉你的那样。C# 编译器会自动char升级为int,但 VB 编译器不会这样做(至少在这种情况下)。您需要先将字符显式转换为整数:

c = ChrW(AscW(c) Xor key)

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

于 2012-07-03T06:06:05.843 回答