| Secure Delete - удаление файла без возможности восстановления |
|
| Написал Snowy | |
| 05.09.2007 | |
|
Вот код, созданный по методу Гуттмана. Код писался не для практических целей, а как демонстрация работы теории. Поэтому в нём много места для оптимизации, т.к. код работает довольно медленно. Но свою задачу он выполняет. А задача простая – удалить файл с дистка так, чтобы его невозможно было восстановить. procedure ZeroFillDelete(FileName: string); var fs: TFileStream; i: integer; procedure RandomWrite; var b: byte; begin repeat b := Random(256); fs.Write(b, 1); until fs.Position + 1 >= fs.Size; end; procedure WritePattern(pattern: byte); const patt: array[5..31] of dword = ($555555, $AAAAAA, $924924, $492492, $249249, 0, $111111, $222222, $333333, $444444, $555555, $666666, $777777, $888888, $999999, $AAAAAA, $BBBBBB, $CCCCCC, $DDDDDD, $EEEEEE, $FFFFFF, $924924, $492492, $249249, $6DB6DB, $B6DB6D, $DB6DB6); var d: dword; begin d := patt[pattern] shl 8; repeat fs.Write(d, 3); until fs.Position + 3 >= fs.Size; end; begin if not FileExists(FileName) then Exit; for i := 1 to 35 do try fs := TFileStream.Create(FileName, fmOpenWrite); try if (i < 5) or (i > 31) then RandomWrite else WritePattern(i); finally fs.Free; end; except Exit; end; DeleteFile(FileName); end;Дискутирование вокруг темы удаления методом Гуттмана можно почитать на http://forum.vingrad.ru/. Автор: Snowy. |
| < Пред. |
|---|

