需要帮助Vb6异或大号
问题描述:
Dim Key As Long
Packet = txtSend.Text
PacketLength = Len(txtSend.Text)
key = &H82381AC + PacketLength * "17"
For ix = 1 To PacketLength - 1
OneCharacter = Mid$(Packet, ix, 1)
NewCharacter = Asc(OneCharacter) Xor key And &H1F
key = key * "13" Xor &H43B
Next ix
循环将运行大约3次然后溢出。我想不管你做什么异或会导致字节,整数或长。 CDec(Key)将无法工作我需要一种方法来绕过这个,所以我可以Xor大数字。需要帮助Vb6异或大号
答
您只能XOR整数,而不是字符串。如果要使用XOR对字符串进行加密,请通过将字符逐个字符应用于字符代码
Public Function Encrypt(ByVal s As String) As String
Const key As String = "r5^245ADh3%^ywftGY53Gsdr245^Tsfdgw45^fGqw4%6243TefgH563&ot7y"
Dim i As Integer
For i = 1 To Len(s)
Mid(s, i, 1) = Chr(Asc(Mid(s, i, 1)) Xor Asc(Mid(key, i, 1)))
Next i
Return s
End Function
+0
这篇[MSDN上的文章](http://msdn.microsoft.com/en-us/library/key2x70f(VS.71).aspx)演示了如何删除算术溢出检查。 – 2012-02-18 18:56:04
+0
我把它们从高级编译的整个项目中删除了。 – Tprice88 2012-02-18 18:57:10
114141413415比字符长。但是当你弄明白的时候,答案会是114141414428。 – JoshRoss 2012-02-18 18:42:56