Hey ihr lieben,
ich denke mal der Titel ist nicht alzu unverständlich. Heute beschäftige ich mich mit verschlüsselungen & habe mich an RC4 herangewagt, was auch die erste verschlüsselungsmethode ist mit der ich Arbeite. Ich habe Texte erfolgreich verschlüsselt & wieder entschlüsselt .. aber bei Bildern bekomme ich unverständliche Ergebnisse. Ich habe Program A das die Datei verschlüsselt & sie dann ablegt. Program B entschlüsselt sie & legt sie dann auch ab. Ich arbeitete base64 mit ein weil ich dachte vielleicht das Sonderzeichen Problem damit zu beheben, das wiederum hilft mir diesmal nicht & im Bildcode fehlen zeichen(außerdem ist das bild auch fast doppelt so groß).
Spoiler anzeigen
#include "_Base64.au3"
$Target = @ScriptDir & "\help.jpg"
$OTarget = FileOpen($Target, 16)
$Fsize = FileGetSize($Target)
$FRead = FileRead($OTarget, $Fsize)
ConsoleWrite(BinaryToString($FRead) & @CRLF)
$Base64 = _Base64Encode(BinaryToString($FRead), True, True)
ConsoleWrite($Base64 & @CRLF)
$RC4 = RC4($Base64, "Password", 0)
ConsoleWrite($RC4 & @CRLF)
FileDelete(@ScriptDir & "\text.txt")
$NewFile = FileOpen(@ScriptDir & "\text.txt", 1)
FileWrite($NewFile, $RC4)
FileClose($NewFile)
Func RC4($Data, $Phrase, $Decrypt)
Local $a, $b, $i, $j, $k, $cipherby, $cipher
Local $tempSwap, $temp, $PLen
Local $sbox[256], $key[256]
$PLen = StringLen($Phrase)
For $a = 0 To 255
$key[$a] = Asc(StringMid($Phrase, Mod($a, $PLen) + 1, 1))
$sbox[$a] = $a
Next
$b = 0
For $a = 0 To 255
$b = Mod(($b + $sbox[$a] + $key[$a]), 256)
$tempSwap = $sbox[$a]
$sbox[$a] = $sbox[$b]
$sbox[$b] = $tempSwap
Next
If $Decrypt Then
For $a = 1 To StringLen($Data) Step 2
$i = Mod(($i + 1), 256)
$j = Mod(($j + $sbox[$i]), 256)
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
$cipherby = BitXOR(Dec(StringMid($Data, $a, 2)), $k)
$cipher = $cipher & Chr($cipherby)
Next
Else
For $a = 1 To StringLen($Data)
$i = Mod(($i + 1), 256)
$j = Mod(($j + $sbox[$i]), 256)
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
$cipherby = BitXOR(Asc(StringMid($Data, $a, 1)), $k)
$cipher = $cipher & Hex($cipherby, 2)
Next
EndIf
Return $cipher
EndFunc ;==>RC4
Alles anzeigen
Spoiler anzeigen
#include "_Base64.au3"
$Target = @ScriptDir & "\text.txt"
$TargetS = @ScriptDir & "\result.jpg"
$OTarget = FileOpen($Target)
$RTarget = FileRead($OTarget)
ConsoleWrite($RTarget & @CRLF)
$RC4 = RC4($RTarget, "Password", 1)
ConsoleWrite($RC4 & @CRLF)
;~ $5 = StringTrimLeft(BinaryToString($RC4), 3)
$base64 = _Base64Decode($RC4)
ConsoleWrite($base64 & @CRLF)
FileDelete($TargetS)
$TargetW = FileOpen($TargetS, 1)
FileWrite($TargetW, $base64)
FileClose($TargetW)
Func RC4($Data, $Phrase, $Decrypt)
Local $a, $b, $i, $j, $k, $cipherby, $cipher
Local $tempSwap, $temp, $PLen
Local $sbox[256], $key[256]
$PLen = StringLen($Phrase)
For $a = 0 To 255
$key[$a] = Asc(StringMid($Phrase, Mod($a, $PLen) + 1, 1))
$sbox[$a] = $a
Next
$b = 0
For $a = 0 To 255
$b = Mod(($b + $sbox[$a] + $key[$a]), 256)
$tempSwap = $sbox[$a]
$sbox[$a] = $sbox[$b]
$sbox[$b] = $tempSwap
Next
If $Decrypt Then
For $a = 1 To StringLen($Data) Step 2
$i = Mod(($i + 1), 256)
$j = Mod(($j + $sbox[$i]), 256)
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
$cipherby = BitXOR(Dec(StringMid($Data, $a, 2)), $k)
$cipher = $cipher & Chr($cipherby)
Next
Else
For $a = 1 To StringLen($Data)
$i = Mod(($i + 1), 256)
$j = Mod(($j + $sbox[$i]), 256)
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
$cipherby = BitXOR(Asc(StringMid($Data, $a, 1)), $k)
$cipher = $cipher & Hex($cipherby, 2)
Next
EndIf
Return $cipher
EndFunc ;==>RC4
Alles anzeigen
Ich mache also irgendetwas falsch und ich bin mir nicht sicher wie ich hier vorgehen soll.