ausnahmsweise habe ich mal kein Problem, sondern eine Lösung, bin mir aber nicht sicher, ob die Lösung kein Problem macht, weil ich eigentlich ein Problem erwartet hatte.
Die Fragestellung taucht auf, weil ich ein Programm, das bisher als "File of TDataRec" definiert war, auf Streams umbauen möchte, Erschwerend kommt hinzu, dass der Datenstrom mit Blowfish verschlüsselt ist.
Ich arbeite im Moment mit folgender Annahme:
die Verschlüsselung verschlüsselt einen bestimmten Record immer gleich, unabhängig davon wo er im Datenstrom steht.
Ein Beispiel, paar Fetzen aus dem Programm, ausgehend von einer Liste (z.B. einem Array of TDataRec) im Speicher:
Code: Alles auswählen
var
DataArray : Array of TDataRec;
Procedure SaveAll
var
FileStream: TFileStream;
EncryptStream: TBlowFishEncryptStream;
...
FileStream := TFileStream.Create(FilePath, fmOpenWrite);
EncryptStream := TBlowFishEncryptStream.Create(ENCRYPTKEY, FileStream);
for i := Low(DataArray) to High(DataArray) do
BlowFishEncryptStream.WriteBuffer(DataArray[i],SizeOf(TDataRec))
...
Procedure SaveRec(r:TDataRec,ndx:Integer);
var
FileStream: TFileStream;
EncryptStream: TBlowFishEncryptStream;
...
FileStream := TFileStream.Create(FilePath, fmOpenWrite);
EncryptStream := TBlowFishEncryptStream.Create(ENCRYPTKEY, FileStream);
FileStream.Seek(ndx*SizeOf(TDataRec));
BlowFishEncryptStream.WriteBuffer(DataArray[i],SizeOf(TDataRec))
Dem scheint aber nicht so zu sein. Baue ich z.B. das Array mit 5 identischen Records auf, und schreibe ich das gesamte Array mit SaveAll weg, sehe ich im Hex-Editor auch 5 Mal hintereinander den selben Byte-Haufem in der Datei.
Habe ich das richtig beobachtet, und kann ich mich auf dieses Verhalten denn verlassen? Ich meine, es kommt mir im Moment gelegen, weil ich dadurch nur wenig ändern muss an der Datenzugriffsschicht meiner "Altlast", aber andererseits ... von einer Verschlüsselung, die nach wie vor als sehr gut gehandelt wird, hätte ich schon erwartet, dass gleiche Daten, die an verschiedenen Stellen im Datenstrom auftauchen, verschieden verschlüsselt werden.
Was meint ihr dazu?
Armin.
Ich hoffe, ich konnte mich halbwegs verständlich ausdrücken. Wie gesagt, mein Testprogramm funktioniert. Ich traue der Sache aber nicht ganz.