2010-12-14 26 views
0

Bonjour j'ai un prob que je peux résoudre par moi-même, Vb.net 2010XOR sur la valeur HEX dans Visual Basic 2010 textbox

Je:

  1. TextBox1.Text avec « 4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D »
  2. Textbox2.text avec "1b"
  3. Bouton de commande avec ce code:

    Dim M As String = TextBox1.Text 
    Dim hex2 As String = TextBox2.Text 
    Dim R 
    ' StringTest2 += Chr(Convert.ToInt32(Mid(StringTest1, i, 2), 16)).ToString 
    For i = 1 To M.Length Step 2 
        TextBox1.Text = TextBox1.Text & "-" 
        Dim dec1 As Integer = Mid(M, i, 2).ToString 
        Dim dec2 As Integer = Convert.ToInt32(hex2, 16) 
        ' MsgBox(dec2) 
        Dim result As Integer = dec1 Xor dec2 
        R = R & result 
    Next 
    
    
    TextBox1.Text = R 
    

Textbox1 peut être modifiée que je souhaite, mais dans ce cas, il est hex "4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D". TextBox2 contient la valeur XOR avec ...

Je veux simplement XOR chaque valeur textbox1 avec 1B comme « 4B XOR 0x1b » etc ....

Quand je le fais avec ce code qu'il donne moi: « Lors de la coulée d'un nombre la valeur doit être inférieure à l'infini » Quand je mets un « Lors de la reprise d'erreur suivant » avant le code, il m'a donné dans le résultat: « 2731313830191927282727276528242727272727 »

le résultat correct sur xor'ing Une fois "4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D" avec 0x1b (27 décimales) est "50 55 7A 43 01 1C 1B D4 8B 68 1B 1B 16"

Si nous appliquons Xor une autre fois sur le résultat "50 55 7A 43 01 1C 1B D4 8B 68 1B 1B 16" nous devons trouver la première chaîne hexagonale comme réponse "4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D"

je télécharger le code ici hxxp: //dl.free.fr/iG2mDDdVh

Répondre

1

Je crois que c'est ce que vous essayez de faire:

Dim input As String = "4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D" 
    Dim sb As New System.Text.StringBuilder() 

    Dim xorhex As String = "1B" 
    Dim xornum As Integer = Integer.Parse(xorhex, Globalization.NumberStyles.HexNumber) 

    For Each numhex As String In input.Split(" "c) 
     Dim num As Integer = Integer.Parse(numhex, Globalization.NumberStyles.HexNumber) 
     sb.Append((num Xor xornum).ToString("X2")).Append(" ") 
    Next 

    Console.WriteLine(sb.ToString()) 

vous devriez pouvoir passer facilement les variables pour correspondre à votre code - Je voulais spécifiquement publier ceci comme un exemple qui compile et affiche des informations si elles sont exécutées dans un environnement d'application de console.

+0

Merci pour la réponse, mais le code que vous me donnez est le même que je trouve partout, il don "t me aider beaucoup. ... – HackimTheDream

+0

Changez le "X" en "X2" qui va forcer l'hexagone à deux endroits –

+0

@Chris - Merci! – BeemerGuy

0

Le code de travail final pour Xor/unXor le même nombre de Hex est:

Dim input As String = TextBox1.Text 
    Dim sb As New System.Text.StringBuilder() 

    Dim xorhex As String = TextBox2.Text 
    Dim xornum As Integer = Integer.Parse(xorhex, Globalization.NumberStyles.HexNumber) 

    For Each numhex As String In input.Split(" "c) 
     Dim num As Integer = Integer.Parse(numhex, Globalization.NumberStyles.HexNumber) 
     sb.Append((num Xor xornum).ToString("X2")).Append(" ") 
    Next 

    'Console.WriteLine(sb.ToString()) 
    TextBox1.Text = sb.ToString 
    TextBox1.Text = TextBox1.Text.Remove(TextBox1.Text.Length - 1, 1) 
0

J'ai converti @ code de BeemerGuy à une fonction encapsulé qui pourrait faciliter les choses pour vous. Si cela fonctionne pour vous, acceptez la réponse de BeemerGuy, pas la mienne.

Public Shared Function XORHexValues(ByVal input As String, ByVal xorWith As String) As String 
    Dim sb As New System.Text.StringBuilder() 

    'Convert the string representation of our byte to a true byte 
    Dim xornum As Byte = Byte.Parse(xorWith, Globalization.NumberStyles.HexNumber) 
    Dim Num As Byte = Nothing 

    'Loop through each string "byte" in the text 
    For Each numhex As String In input.Split(" "c) 
     'Conver the string to a true byte 
     Num = Byte.Parse(numhex, Globalization.NumberStyles.HexNumber) 
     'Add to our output text with a trailing space 
     sb.Append((Num Xor xornum).ToString("X2")).Append(" ") 
    Next 

    'Return our string removing the last trailing space 
    Return sb.ToString().TrimEnd(" "c) 
End Function 

Et assumming vous avez un bouton appelé Button1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    'Initial value 
    Dim StartValue = "4B 4E 61 58 1A 07 00 CF 90 73 00 00 0D" 
    'String (byte) to XOR with 
    Dim XORWith As String = "1B" 
    'Value that we expect to get from our function 
    Dim ExpectedValue = "50 55 7A 43 01 1C 1B D4 8B 68 1B 1B 16" 
    'XOR the original string 
    Dim Result1 = XORHexValues(StartValue, XORWith) 
    'XOR the output to get our original string back 
    Dim Result2 = XORHexValues(Result1, XORWith) 

    ''This code just proves that it works 
    'Test the first result with what we expected 
    Trace.WriteLine("Round 1 matches expected: " & If(String.Compare(ExpectedValue, Result1, StringComparison.InvariantCultureIgnoreCase) = 0, "yes", "no")) 
    'Test the second result with the original string 
    Trace.WriteLine("Round 2 matches original: " & If(String.Compare(StartValue, Result2, StringComparison.InvariantCultureIgnoreCase) = 0, "yes", "no")) 
End Sub