Hallo,
wie
hier nachzulesen ist, hab ich ein kleines Problem mit der simpelsten aller COR-Verschlüsselungen gehabt

Dabei ging es darum, dass mein verschlüsselter String immer abbrach wenn der Schlüssel an einer best. Stelle gleich dem String war.
Ich hab das ganze Problem umgangen, indem ich, wenn o.g. Fall auftrat, mit einem anderen Zeichen verschlüsselte, wodurch natürlich eine Extra-Decode-Funktion geschrieben werden musste.
Soweit hat alles geklappt, als Zeichen hab ich '#' gewählt, da das in normalen Texten nie vorkommt
Jetzt merke ich allerdings, dass das Programm bei dem Wort 'wie' ein Problem hat. Nicht bei 'awie' und auch nicht bei 'we' sondern nur bei 'wie' ...
Hier der Code der Funktionen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| function EncodeXOR(Str, Key: String): String; var i, q, StrLen, KeyLen: Integer; EncStr: String; begin StrLen := Length(Str); KeyLen := Length(Key); SetLength(EncStr, StrLen); q := 1; for i := 1 to StrLen do begin if Str[i] <> Key[q] then EncStr[i] := Chr(Ord(Str[i]) xor Ord(Key[q])) else EncStr[i] := Chr(Ord(Str[i]) xor Ord('#')); Inc(q); if q > KeyLen then q := 1; end; Result := EncStr; end;
function DecodeXOR(EncStr, Key: String): String; var i, q, StrLen, KeyLen: Integer; DecStr: String; begin StrLen := Length(EncStr); KeyLen := Length(Key); SetLength(DecStr, StrLen); q := 1; for i := 1 to StrLen do begin if Ord(EncStr[i]) xor Ord(Key[q]) = Ord('#') then DecStr[i] := Chr(Ord(EncStr[i]) xor Ord('#')) else DecStr[i] := Chr(Ord(EncStr[i]) xor Ord(Key[q])); Inc(q); if q > KeyLen then q := 1; end; Result := DecStr; end; |
Ich hoffe ihr könnt mir helfen, den Fehler

zu finden ...
Nebenbei: Wer eine recht einfache XOR-Verschlüsselung kennt oder einen guten Link dazu, der kann ihn mir auch gerne sagen
