Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 07:49
Wie bekommt man es hin, nur einen Teil einer sehr großen Datei auszutauschen bzw. zu schreiben, ohne gleich die gesamte Datei neu schreiben zu müssen?
Das ist total easy:

Delphi-Quellcode:
const
  BLOCKSIZE = 1024
var
  stream : TStream;
  s : AnsiString;
begin
  stream := TFileStream.Create('datei.vhd', fmOpenReadWrite or fmShareDenyWrite);
  try
    SetLength(s, BLOCKSIZE);
    stream.ReadBuffer(s[1], Length(s)); // Block einlesen
    s := XORString(s, 'geheime passphrase zur Verschlüsselung'); // ver- oder entschlüsseln
    stream.Position := 0; // zurück auf Anfang
    stream.WriteBuffer(s[1], Length(s)); // Block überschreiben
  finally
    stream.Free;
  end;
end;
Der Code könnte kleine Fehler enthalten da ungetestet
Die Funktion XORString ist eine einfache XOR-Verschlüsselung.
Delphi-Quellcode:
function XORString(const text, key:AnsiString):AnsiString;
var
   i, j, keylen : Integer;
begin
   SetLength(Result, length(text));
   j := 1;
   keylen := Length(key);
   for i := 1 to Length(text) do
   begin
      Result[i] := chr(ord(text[i]) xor ord(key[j]));
      Inc(j);
      if j > keylen then j := 1;
   end;
end;
fork me on Github
  Mit Zitat antworten Zitat