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