Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Eine Datei mit Zufallsdaten überschreiben
Marco D. - Di 17.10.06 18:32
Titel: Eine Datei mit Zufallsdaten überschreiben
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.OverwriteFile(Filename: string; number: integer;); var stream: TFilestream; i,zahl: integer; begin stream := TFilestream.Create(filename,fmOpenWrite); randomize; for i := 1 to number do begin zahl := random(1); stream.Write(zahl,SizeOf(zahl)) end; FreeAndNil(stream); end; |
Habe für ein Programm diesen Algorithmus gschrieben. Er soll eine Datei unleserlich machen. Wenn man eine Datei unter Windows löscht, kann man sie ja normalerweise leicht wiederherstellen. Diese Prozedur soll so eine Datei mit Zufallsdaten überschreiben.
Was haltet ihr von ihr? Optimierungen? Ist das so Quatsch?
Narses - Di 17.10.06 18:38
Moin!
Wenn "number" die Menge in Bytes sein soll, fliegt dir das um die Ohren bzw. schreibt die 4fache Datenmenge. ;)
cu
Narses
Horst_H - Di 17.10.06 18:58
Hallo,
random(1) ist immer 0
Lieber random(256*256) und eine 2-Byte Wert fuer Zahl benutzen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.OverwriteFile(Filename: string; number: integer;); var stream: TFilestream; i: integer;zahl:word; begin stream := TFilestream.Create(filename,fmOpenWrite); randomize; for i := 1 to number do begin zahl := random(256*256); stream.Write(@zahl,SizeOf(zahl)) end; FreeAndNil(stream); end; |
Ausserdem darf number nicht größer als die Dateigröße/2 sein, wie Narses schon sagte.
Muss ich mal testen.
Gruss Horst
Marco D. - Di 17.10.06 20:59
Warum denn einen 2-Byte-Wert nehmen?
Horst_H - Di 17.10.06 21:20
Hallo,
@Luckie:
wo ist da eine Fliesskommarechnung? Da wird doch vom Compiler ohnehin die Konstante zusammengefasst.
@Marco:
Weil der nur integer Zahlen von 0..2^31-1 ohne die negativen Zahlen erzeugt werden, also waere Bit 31(0..31) immer 0 und nicht zufällig.
Gruss Horst
Marco D. - Di 17.10.06 21:24
Und warum steht bei dir vor zahl ein @?
Horst_H - Di 17.10.06 21:31
Hallo,
weil es falsch ist ;-)
Gruss Horst
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!