HI,
als erstes mal würde ich dir Vorschlagen, deine Schlüssel in ein Array of Char zu laden. Das lässt sich mit der Funktion Read bewerkstelligen. Dann brauchst du eine Schleife, die eine Datei lesend und schreibend öffnet. Von dieser liest du ein Zeichen, geht das Zeichen zurück und überschreibst das Zeichen mit dem verschlüsselten Wert. Das sieht dann so aus:
Delphi-Quellcode:
procedure EncryptFile(XFile, KFile: String);
var
fkey, fxfile: TFilestream;
keys: array[0..524287] of Char; // deine Menge weniger 1
i: Cardinal;
buffer: Char;
begin
fkey := TFileStream.Create(kfile, fmOpenRead);
fkey.Read(keys, 524288); // nun wieder vollzählig
fkey.Free; // wird nicht mehr benötigt, da im Speicher
fxfile := TFileStream.Create(xFile, fmOpenReadWrite);
for i := 1 to fxfile.Size do
begin
fxfile.Read(buffer, 1);
fxfile.Position := fxFile.Position - 1;
fxFile.Write(Chr(Ord(buffer) XOR Ord(keys[(i-1) mod 524287])), 1); // XOR
end;
fxfile.Free;
end;
Frei im Editor getippt. Kann Fehler enthalten.
Bernhard
EDIT: "ZWEIFEL" drückst du keine aus. Also kannst du dir auch gleich noch einen neuen Namen für das Thema suchen