需要帮助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异或大号

+0

114141413415比字符长。但是当你弄明白的时候,答案会是114141414428。 – JoshRoss 2012-02-18 18:42:56

您只能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