Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

[gelöst] binär lesen und schreiben

  Alt 29. Apr 2005, 00:15
Hi Delphianer,

ich lese Informationen vom Rechner aus, z.B. die Seriennummer von Windows, verschlüssle diese mittels RC4 (Danke Luckie für das Demo) und möchte diesen verschlüsselten String in einer Datein speichern;

Später möchte ich diese Datei auslesen und mit der Seriennummer wieder vergleichen;
Worauf das hinausläuft, könnt ihr euch sicher vorstellen;

folgendes Problem:
Wieso sind die Strings nicht gleich?


Zunächst mal mein Code:
Delphi-Quellcode:
procedure fWriteFile (psFileName,psContent:string);
var
  FileHandle : integer;
begin
  if FileExists( psFileName ) then deleteFile (pchar(psFileName));
  FileHandle := FileCreate(psFileName);
  FileWrite(FileHandle,psContent,length(psContent));
  FileClose(FileHandle);
end;


function fReadFile (psFileName,psContent:string) : boolean;
var
  FileHandle,nRead,i,FileLength : integer;
  Buffer: PChar;
  bOkay : boolean;
begin
  bOkay := false;
  if FileExists( psFileName ) then begin
    FileHandle := FileOpen(psFileName, fmOpenRead);
    FileLength := FileSeek(FileHandle,0,2);
    FileSeek(FileHandle,0,0);
    Buffer := PChar(AllocMem(FileLength + 1));
    nRead := FileRead (FileHandle,Buffer^,FileLength);
    FileClose(FileHandle);

    for i:=0 to nRead-1 do begin
      if Buffer[i] = psContent[i] then
        bOkay := true
      else begin
        bOkay := false;
        exit;
      end;
    end;
  end;
  result := bOkay;
end;
Meiner Meinung nach wird der String nicht korrekt gespeichert;
Laut meinem HexEditor stimmen die Bytes in der fReadFile-Funktion im Buffer[i] mit denen in der Datei überein, aber nicht mit dem eigendlichem verschlüsselten String;

Verschlüsselt hin und her, das sollte doch beim Speichern, Lesen und Vergleichen kein Thema sein.

Wo mache ich den Fehler beim speichern?

Bin Dankbar für jede Hilfe.

Gruß
gmc