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

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

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

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

1.格式化硬盘;

2.重装操作系统;

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

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

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

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

移交笔记本电脑前如何安全地删除个人数据_第1张图片

该程序已上传到这里: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行代码,写入后找个文件来看一下内容:

移交笔记本电脑前如何安全地删除个人数据_第2张图片

可以看到,确实是填充了随机内容。虽然不是特别随机,也没有写够6次以上,但已经无法用软件恢复,对普通人来说已经足够安全了。

 

你可能感兴趣的:(移交笔记本电脑前如何安全地删除个人数据)