Delphi-Quellcode:
procedure TVigenere.Verschluesseln(pPlaintext, pSchluessel: String);
var i, j, k: integer;
lBuchstabe: char;
begin
zPlaintext:=pPlaintext;
zSchluessel:=pSchluessel;
zCiphertext:='';
for i:=1 to length(zPlaintext) do
begin
j:=i mod ord(zSchluessel[i]); // ausgebessert
k:=(i+j) mod 26;
lBuchstabe:=(Chr(97+k));
zCiphertext:=zCiphertext+lBuchstabe;
end;
end;
Sollte doch so, gehen oder?
Du solltest dann nur sicherstellen, daß der Schlüssel die gleiche
Länge wie der Klartext hat.
edit: ausgebessert
edit2: Ist bei Dir A = 0 B = 1 ... und a = 0 und b = 1 ...?
Dann mußt Du von allen ord-Werten den Ordinalwert von A abziehen, dann solltest Du auf Deine
Werte kommen.
edit3: ord(t) != 19 und ord(k) != 10, ord gibt Dir den
Ascii Wert eines Zeichens zurück.
19= ord(t) - ord(a);
Grüße
Klaus