I have a program called Terminus 6 that I use for file destruction purposes. I buy laptops and used servers on ebay quite often and i've been always told to wipe out a harddrive when I receive a used computer because one doesn't actually know what the original user kept on the harddrive.
I use DoD 5220.22-M method for wiping, this is what Terminus 6 says in it's descriptions.
Overwrite Methodologies
Terminus 6 uses overwrite methodology datafiles to determine what to write and what order to write it. The datafile essentially lists the overwrite passes, along with some additional information. Seventeen such datafiles are included with the Terminus distribution.
Selecting the overwrite methodology datafile to use selects how Terminus will destroy data.
If you have specific needs in terms of overwrite patterns, you may want to create a new datafile to provide for those needs. Here's what an overwrite methodology datafile looks like:
[OverwriteMethodology]
Title=The 'DoD Standard' methodology uses two passes of
binary checkerboard patterns, followed by a third pass
of pseudorandom garbage.
Title2=(Compliance: DoD 5220.22-M, S 8.306, Matrix Entry D)
VerifyOV=NO
OVPassData00000001=55
OVPassDesc00000001=Binary Checkerboard (1 of 2)
OVPassData00000002=AA
OVPassDesc00000002=Binary Checkerboard (2 of 2)
OVPassData00000003=–
OVPassDesc00000003=Pseudorandom Garbage (May take some time!)
Each datafile is in Windows-standard INI file format and has a section called [OverwriteMethodology], and within that section are a few Value pieces of information:
Title
The first of two lines of descriptive text, provided for human readability.
Title2
The second of two lines.
VerifyOV
This will be one of two values, YES or NO. If the value is YES, this methodology requires a verify pass once the overwrite is complete.
OVPassData00000001
The first overwrite pass' data. The data is listed as two-character hexadecimal values without any other symbols (FF, E0, 01, etc.), and if more than one such value is provided Terminus will use them as a repeating pattern. If the value is — (two hyphens), Terminus will assume the pass is pseudorandom garbage.
OVPassDesc00000001
The description of the first overwrite pass, provided for human readability.
CAUTION!
OVPassData and OVPassDesc MUST have an eight-digit value following them, and this value must start with one and contain any necessary leading zeroes (i.e., 00000001 for the first pass, 00000002 for the second, and so on.). Each OVPassData entry should have an OVPassDesc entry with a matching number after it. Failure to comply with this numbering standard will make Terminus unstable when it tries to load the file, and may cause a crash.
You can add as many passes as you wish, as Terminus 6 doesn't arbitrarily limit the maximum number of passes. However, the more passes you have the longer a wipe will take, especially if you include one or more pseudorandom passes.
and this is what is listed for Pseudorandom Number Generation
Pseudorandom number generation is something computers historically don't do well. Terminus uses one of the most advanced pseudorandom number generators (or PRNGs) available in a data destruction toolkit.
The three options for the Terminus PRNG relate to the reuse of pseudorandom garbage, the algorithm used to generate the garbage, and entropy polling.
First, reusing pseudorandom garbage…
Terminus can reuse PRNG output for each cluster instead of generating new garbage for each cluster. This sacrifices speed for security, and for high-security environments you must enable the "always regenerate PRNG" option
Next, the pseudorandom generator algorithm setting…
Terminus offers three PRNGs (Pseudo-Random Number Generators): the standard one based on Windows' system timer, the ISAAC algorithm, and the Mersenne-Twister algorithm.
The ISAAC algorithm developed by Bob Jenkins. Terminus uses a very fast implementation of ISAAC written by Michael in der Wiesche.
Even though Terminus' ISAAC and Mersenne-Twister implementation is very fast, they are slower than the built-in PRNG that comes with Windows. If your security needs don't require the additional randomness of the special algorithms, using the standard PRNG will make pseudorandom overwrite passes quite a bit faster.
Finally, entropy polling…
Entropy in this context is data gathered from the computer itself. Terminus can gather random garbage from the machine it's running on, and use that garbage to seed its PRNG. Terminus' method of gathering entropy was designed to make nearly pure randomness without requiring specialized random number generator hardware, and Terminus saves this entropy data in one-megabyte chunks for later use.
To enable entropy gathering, put a check in the "e
"enable entropy polling" box and then give Terminus a number in the "store this many megabytes of entropy" box to tell it how many megabytes of entropy to store.
now according to the article I read on data recovery, apparently this claims that overwriting methods do not actually prevent data from being recovered.
"Data overwritten once or twice may be recovered by subtracting what is expected to be read from a storage location from what is actually read. Data which is overwritten an arbitrarily large number of times can still be recovered provided that the new data isn't written to the same location as the original data (for magnetic media), or that the recovery attempt is carried out fairly soon after the new data was written (for RAM). For this reason it is effectively impossible to sanitise storage locations by simple overwriting them, no matter how many overwrite passes are made or what data patterns are written."