Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: einfaches Entschlüsselungsproblem

  Alt 31. Dez 2005, 13:08
Auch dir alles Gute für das kommende Jahr, Penelopee.

Was du falsch gemacht hast kann ich dir nur sagen, wenn du vorher verrätst, was du eigentlich machen wolltest.

Dein Code sieht etwas seltsam aus. Die Nachricht wird mit jedem Zeichen aus dem Schlüssel einmal "verschlüsselt". Das Alphabet für deine Nachricht und den Schlüssel muss in beiden Fällen ['A'..'Z'] sein, sonst funktioniert es nicht.

Delphi-Quellcode:
// Einfachverschlüsselung, rollender Schlüssel
function Cipher(const text, key: string; encoding: boolean): string;
var
  i: integer;
  t, k, c: integer;
begin
  SetLength(Result, Length(text));
  for i := 1 to Length(text) do
  begin
    t := Ord(text[i]) - 65 + 26;
    k := Ord(key[Succ(Pred(i) mod Length(key))]) - 65;
    if encoding
      then c := t + k
      else c := t - k;
    Result[i] := Chr(65 + (c mod 26));
  end;
end;

function Encode(const text, key: string): string;
begin
  Result := Cipher(Text, key, true);
end;
Wie könnte denn die Funktion Decode() aussehen?

Silvestergrüße vom marabu


Nachtrag:

Du wolltest wahrscheinlich gar keinen rollenden Schlüssel!?

Delphi-Quellcode:
// Mehrfachverschlüsselung
function Cipher(const text, key: string; encoding: boolean): string;
var
  i, j: integer;
  t, k, c: integer;
begin
  SetLength(Result, Length(text));
  for j := 1 to Length(key) do
    for i := 1 to Length(text) do
    begin
      t := Ord(text[i]) - 65 + 26;
      k := Ord(key[j]) - 65;
      if encoding
        then c := t + k
        else c := t - k;
      Result[i] := Chr(65 + (c mod 26));
  end;
end;
Nachtrag zum Nachtrag:

Diese Form der Mehrfachverschlüsselung hat keinen Einfluss auf die Sicherheit, vervielfacht aber den Rechenaufwand.
  Mit Zitat antworten Zitat