2012-02-18 68 views
0
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

回答

1

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