String mit BitXOR verschlüsseln

  • Schönen Nachmittag euch allen. :)

    Ich versuche einen String mit XOR zu verschlüsseln, doch es will nicht so recht.

    Mein Ansatz war:

    [autoit]

    BitXOR($binstring, 0x72)

    [/autoit]

    Aber da wird nur 114 (0x72) ausgegeben.
    Und hier weiß ich nichtmehr weiter.

    MfG,
    Nestos.

    Edit:
    Mir ist gerade aufgefallen, dass wenn man einen kürzeren String verwendet, zB.: "test", funktioniert die Verschlüsselung.

    [autoit]

    Global $string = "testte stt e s ttes"
    Global $binstring = StringToBinary($string)
    Global $crypt = BitXOR($binstring, 0x72)

    [/autoit][autoit][/autoit][autoit]

    _debug("Original: " & @TAB & @TAB & $string & @CRLF & _
    "Binär: " & @TAB & @TAB & $binstring & @CRLF & _
    "Verschlüsselt: " & @TAB & $crypt)

    [/autoit][autoit][/autoit][autoit]

    Func _debug($text)
    MsgBox(0, "Debug", $text)
    EndFunc

    [/autoit]
    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    Einmal editiert, zuletzt von H2112 (14. April 2012 um 17:07)

  • Du musst die "Verschlüsselung" Zeichen für Zeichen machen, z.B. StringToASCIIArray, For-Schleife, StringFromASCIIArray

  • Danke für den Tipp progandy, so hab ichs nun auch gemacht. :)

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $string = "testte stt e s ttes"
    Global $split = StringToASCIIArray($string, "")
    Global $byte = _encode($split, 0xFF)

    [/autoit][autoit][/autoit][autoit]

    _debug(_ArrayToString($byte))

    [/autoit][autoit][/autoit][autoit]

    Func _encode($split, $crypt = 0xFF)
    Local $ret[UBound($split)]
    For $i = 0 To UBound($split) - 1
    $ret[$i] = "0x" & Hex(BitXOR($split[$i], $crypt), 2)
    Next
    Return $ret
    EndFunc ;==>_encode

    [/autoit][autoit][/autoit][autoit]

    Func _debug($text)
    MsgBox(0, "Debug", $text)
    EndFunc ;==>_debug

    [/autoit]
    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Hier noch eine Möglichkeit ohne StringToASCIIArray():

    Spoiler anzeigen
    [autoit]

    $sString = 'TestTestTest'
    $sCrypted = _crypt_xor($sString, 0xFF)
    $sEnCrypted = _crypt_xor($sCrypted, 0xFF)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("String: "&$sString&@CRLF)
    ConsoleWrite("Crypted: "&$sCrypted&@CRLF)
    ConsoleWrite("Encrypted: "&$sEnCrypted&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func _crypt_xor($sString, $iCrypt = 0xFF)
    Local $tString = DllStructCreate('BYTE['&StringLen($sString)&']'), $sCrypt = ''
    DllStructSetData($tString, 1, $sString)
    For $iI = 1 To StringLen($sString)
    $sCrypt &= Chr(BitXOR(DllStructGetData($tString, 1,$iI), 0xFF))
    Next
    Return $sCrypt
    EndFunc

    [/autoit]
    Zitat

    You just keep on trying 'till you run out of cake. ;)


    [STEAM] Source UDF

    2 Mal editiert, zuletzt von K4z (14. April 2012 um 17:52)