天天看點

資料擦除算法

====================================================================

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, ""  }

====================================================================

繼續閱讀