RC4

  • Hallo,

    weiß jemand ob/wie man unten stehende Funktion dazu bewegt einen RC4-verschlüsselten String zu entschlüsseln. Das Verschlüsseln damit klappt, aber anders herum nicht - und angeblich soll diese Funktion beides machen. Ich habe in PHP für diesen Zweck ebenfalls eine Funktion, bei der funktioniert das auch, ohne dass man ihr mitteilt, was zu tun ist (s. noch weiter unten). Die macht das zwar nicht in Hex sondern als String, aber eben ohne Anweisung hin und zurück.

    Vielen Dank für jede Hilfe...
    Trainer


    [autoit]


    Func rc4($key, $value)
    Local $S[256], $i, $j, $c, $t, $x, $y, $output
    Local $keyLength = BinaryLen($key), $valLength = BinaryLen($value)
    For $i = 0 To 255
    $S[$i] = $i
    Next
    For $i = 0 To 255
    $j = Mod($j + $S[$i] + Dec(StringTrimLeft(BinaryMid($key, Mod($i, $keyLength)+1, 1),2)),256)
    $t = $S[$i]
    $S[$i] = $S[$j]
    $S[$j] = $t
    Next
    For $i = 1 To $valLength
    $x = Mod($x+1,256)
    $y = Mod($S[$x]+$y,256)
    $t = $S[$x]
    $S[$x] = $S[$y]
    $S[$y] = $t
    $j = Mod($S[$x]+$S[$y],256)
    $c = BitXOR(Dec(StringTrimLeft(BinaryMid($value, $i, 1),2)), $S[$j])
    $output = Binary($output) & Binary('0x' & Hex($c,2))
    Next
    Return StringTrimLeft(StringLower($output),2)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von ip_trainer (18. Januar 2011 um 01:45) aus folgendem Grund: gelöst

  • Warum verwendest du nicht die Crypt.au3?

    [autoit]

    #include<Crypt.au3>
    $vData = "test"
    $vEnc = _Crypt_EncryptData($vData, "123123", $CALG_RC4)

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

    $vDec = _Crypt_DecryptData($vEnc, "123123", $CALG_RC4)
    $vDec2 = _Crypt_EncryptData($vEnc, "123123", $CALG_RC4)
    MsgBox(0, '', BinaryToString($vDec) & @CRLF & BinaryToString($vDec2))

    [/autoit]
  • Hi,

    ich habe es nicht geschaft, mit _Crypt_DecryptData einen (mit der PHP-Funktion verschlüsselten) String wieder zu entschlüsseln.
    Die PHP-Funktion liefert mir z.B. " ΂ïà " = "ce82efc3" (hexadecimal) für "test" mit dem Passwort "bla" verschlüsselt.
    Wenn ich das versuche mit _Crypt_DecryptData zu entschlüsseln, kommt beides Mal nicht das richtige zurück.

    Trainer