您的位置:首页 > 其它

移交笔记本电脑前如何安全地删除个人数据

2011-03-15 22:23 423 查看
搞IT的人都会遇见的问题,特别是有用了公司的笔记本或台式机电脑,自己长期在上面保存了大量的信息文件,突然要换机器或离职移交时,除了要把数据备份,还有一个就是要彻底地删除原有数据。

一般的做法是格式化硬盘并重装系统。但格式化时,我们一般都不做低级格式化,而是快速格式化或普通格式化(即高级格式化)。我个人理解快速格式化是标识全部扇区均可用,普通格式化是会扫描一下每个扇区,但并不会重写,因此这两者都不会彻底清除数据,只是重写了FAT表,数据内容仍在,仍然可以用软件恢复。如果要彻底清除,则需要把所有扇区重写一次,全部写成0或其它随机值。

因此,比较安全的删除步骤如下:

1.格式化硬盘;

2.重装操作系统;

3.把所有扇区重写入一遍。

据说理论上要真正地防止恢复,需要反复往一个磁道扇区里写入随机数据,并至少写入6次以上,这样就连FBI都无法恢复了;否则的话,即使已经重写过数据,利用专门的设备,还是有办法读出磁盘中残留的磁信号,从而恢复出数据来的。

因此,有很多专门做彻底删除的软件出现,功能强大,使用也不简单。其实我们自己要做的话,只要往磁盘里面拷文件就行了,写文件的过程就会重写磁道扇区了。

当然了,一个个文件这样拷贝还是比较麻烦的,一边读一边写,速度也较慢。像我们这些搞编程的,其实自己写一个抹除程序也很容易,比如我就写过一个,抹除的速度很快。界面如下:



该程序已上传到这里:http://download.csdn.net/source/3095713

基本原理就是申请一大片内存,填入随机值,然后大块大块地写磁盘文件,基本上一分钟能抹掉几个G的空间。默认只写入一次。如果你觉得不够,可自行把生成的文件删除,然后再重新生成多几次。

GO按钮的代码如下:

procedure TfrmMain.btnGoClick(Sender: TObject);
var
FS: TFileStream;
I, J: Integer;
BufSize: Integer;
Buffer: PChar;
Sz, szMax, icheck: int64;
fn: string;
begin
I := 0; //初始化
icheck := 0;
BufSize := 1024 * StrToIntDef(edtBufferSize.Text, 1024);
szMax := 1024 * 1024 * StrToIntDef(edtFileSize.Text, 1024);
btnGo.Enabled := False;
btnCancel.Enabled := True;
FCanceled := False;
GetMem(Buffer, BufSize); //申请内存
try
while True do
begin
if ckbRandom.Checked then //随机填充
begin
Randomize;
for J := 1 to BufSize do
PChar(Buffer)[J] := Char(Random(256));
end;
sz := 0;
repeat //获取一个可用的文件名
Inc(I);
fn := Format(edtFileName.Text, [I]);
until not FileExists(fn);
StatusBar1.SimpleText := 'Current file: ' + fn;
StatusBar1.Refresh;
FS := TFileStream.Create(fn, fmCreate); //创建文件并不断写入
try
while sz < szMax do
begin
FS.WriteBuffer(Buffer^, BufSize);
sz := sz + BufSize;
icheck := icheck + BufSize;
if icheck > 30 * 1024 * 1024 then //每写入30M则更新一下进度并检查中止
begin
icheck := 0;
StatusBar1.SimpleText := 'Current file: ' + fn + ' ' + FloatToStr(sz / 1024 / 1024) + 'MB';
Application.ProcessMessages;
CheckAbort(' ');
if FCanceled then
Abort;
end;
end;
finally
FS.Free;
end;
end;
finally
FreeMem(Buffer, BufSize);
btnGo.Enabled := True;
btnCancel.Enabled := False;
end;
end;

总共不到100行代码,写入后找个文件来看一下内容:



可以看到,确实是填充了随机内容。虽然不是特别随机,也没有写够6次以上,但已经无法用软件恢复,对普通人来说已经足够安全了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: