1
2 public static void Wipe(string fileName)
3 {
4 if (File.Exists(fileName))
5 {
6 File.SetAttributes(fileName, FileAttributes.Normal);
7 Random rnd = new Random((int)DateTime.Now.Ticks);
8 FileStream file = File.Open(fileName, FileMode.Open, FileAccess.Write);
9 int fileLength = (int)file.Length;
10 int offset = 0;
11
12 const int BUFFER_SIZE = 100;
13 byte[][] buffers = new byte[4][];
14 buffers[0] = new byte[BUFFER_SIZE];
15 buffers[1] = new byte[BUFFER_SIZE];
16 buffers[2] = new byte[BUFFER_SIZE];
17 buffers[3] = new byte[BUFFER_SIZE];
18
19 rnd.NextBytes(buffers[0]);
20 rnd.NextBytes(buffers[2]);
21 for (int i = 0; i < BUFFER_SIZE; i++)
22 {
23 buffers[1][i] = 0;
24 buffers[3][i] = 0xff;
25 }
26
27 while (offset < (fileLength - BUFFER_SIZE))
28 {
29 for (int i = 0; i < buffers.Length; i++)
30 {
31 file.Seek(offset, SeekOrigin.Begin);
32 file.Write(buffers[0], 0, BUFFER_SIZE);
33 file.Flush();
34 }
35 offset += 100;
36 }
37
38 for (int i = 0; i < buffers.Length; i++)
39 {
40 file.Seek(offset, SeekOrigin.Begin);
41 file.Write(buffers[0], 0, fileLength - offset);
42 file.Flush();
43 }
44
45 file.Close();
46
47 file = File.Open(fileName, FileMode.Truncate, FileAccess.Write);
48 file.Flush();
49 file.Close();
50
51 File.Delete(fileName);
52 }
53 }
54