====================================================================
DoD 5220.22-M算法:
char dod [7];
typedef struct
{
int length;
char* s;
} dwipe_pattern_t
}
覆寫填充七次,定義dod元素值
dwipe_pattern_t patterns [] =
{
{ 1, &dod[0] },
{ 1, &dod[1] },
{ -1, "" },
{ 1, &dod[3] },
{ 1, &dod[4] },
{ 1, &dod[5] },
{ -1, "" },
{ 0, NULL }
};
随機讀取元素存放入dod
r = read( c->entropy_fd, &dod, sizeof( dod ) );
把dod第1個元素反補後放入dod[1]
dod[1] = ~ dod[0];
把dod第4個元素反補後放入dod[5]
dod[5] = ~ dod[4];
當patterns[i].length == 0,什麼都不做 //{ 0, NULL }
當patterns[i].length > 0,把dod中相應某個元素填充磁盤區域,直到填滿 // 如{ 1, &dod[0] },{ 1, &dod[1] }
當patterns[i].length < 0,調用用随機數填充 //{ -1, "" }
====================================================================
DoD Short算法:
覆寫填充三次
dwipe_pattern_t patterns [] =
{
{ 1, &dod[0] },
{ 1, &dod[1] },
{ -1, "" },
{ 0, NULL }
};
随機讀取元素存放入dod
r = read( c->entropy_fd, &dod, sizeof( dod ) );
把dod第1個元素反補後放入dod[1]
dod[1] = ~ dod[0];
當patterns[i].length == 0,什麼都不做 //{ 0, NULL }
當patterns[i].length > 0,把dod中相應某個元素填充磁盤區域,直到填滿 // 如{ 1, &dod[0] },{ 1, &dod[1] }
當patterns[i].length < 0,調用用随機數填充 //{ -1, "" }
====================================================================
Gutmann算法:
覆寫填充35次
dwipe_pattern_t book [] =
{
{ -1, "" },
{ -1, "" },
{ -1, "" },
{ -1, "" },
{ 3, "/x55/x55/x55" },
{ 3, "/xAA/xAA/xAA" },
{ 3, "/x92/x49/x24" },
{ 3, "/x49/x24/x92" },
{ 3, "/x24/x92/x49" },
{ 3, "/x00/x00/x00" },
{ 3, "/x11/x11/x11" },
{ 3, "/x22/x22/x22" },
{ 3, "/x33/x33/x33" },
{ 3, "/x44/x44/x44" },
{ 3, "/x55/x55/x55" },
{ 3, "/x66/x66/x66" },
{ 3, "/x77/x77/x77" },
{ 3, "/x88/x88/x88" },
{ 3, "/x99/x99/x99" },
{ 3, "/xAA/xAA/xAA" },
{ 3, "/xBB/xBB/xBB" },
{ 3, "/xCC/xCC/xCC" },
{ 3, "/xDD/xDD/xDD" },
{ 3, "/xEE/xEE/xEE" },
{ 3, "/xFF/xFF/xFF" },
{ 3, "/x92/x49/x24" },
{ 3, "/x49/x24/x92" },
{ 3, "/x24/x92/x49" },
{ 3, "/x6D/xB6/xDB" },
{ 3, "/xB6/xDB/x6D" },
{ 3, "/xDB/x6D/xB6" },
{ -1, "" },
{ -1, "" },
{ -1, "" },
{ -1, "" },
{ 0, NULL }
};
當patterns[i].length == 0,什麼都不做 //{ 0, NULL }
當patterns[i].length > 0,把dod中相應十六進制填充磁盤區域,直到填滿 // 如{ 1, "/xB6/xDB/x6D" },{ 3, "/xDB/x6D/xB6" },
當patterns[i].length < 0,調用用随機數填充 //{ -1, "" }
====================================================================