2011-06-05 230 views
2

我有我的計算機上的文件粉碎機,我想知道是否有可能使一個在JAVA只是爲了學習的緣故。但是,我不確定它是如何工作的,所以這是我認爲它的作用,請糾正我錯誤的地方。文件粉碎概念的問題

所以基本上它使加密文件的字節數,然後簡單地將其刪除。但是這對我來說似乎太容易了,所以我必須錯過一些東西或者完全錯誤。我已經查過它是如何工作的,但我總是得到軟件廣告。

感謝任何響應

回答

1

覆寫將解決這個問題。下面是使用.NET一個相關的問題(沒有這麼多比Java不同)Shredding files in .NET

1

至少,一個軟件的文件粉碎機必須寫入0成用於保存文件的物理介質。

+0

可能是一個愚蠢的問題,但你要重命名的文件,以隨機的東西? – Austin 2011-06-05 00:45:38

+0

@奧斯汀:根據文件系統的不同,重命名文件可能會導致該名稱以前存在的文件未知,但某些文件系統會散列該文件的名稱,以免技術失效。另一方面,如果您重複使用包含您之前選擇的文件名的字典中的隨機單詞,您可能會聲稱似是而非的可否認性,但我必須說,它可能不會很好地保護您。 – 2011-06-05 01:09:47

+0

@奧斯汀,那不是一回事。當你刪除一個文件時,你只需刪除文件指針,數據仍然存在,那麼你就會丟失指針。是的,這取決於FS的實施。您可以實施或更改您的fs實施,以在刪除文件時碎化文件,但會帶來巨大的成本。 – 2011-06-05 22:58:17

0

你可以做的是一個接一個地從文件中獲取的叮咬,將它們設置爲0,並將它們發送到遺忘又名垃圾:)

+0

你並不需要閱讀的字節數,零不大於1更好的選擇(恕我直言)更多的魔法將位設置爲隨機模式,如果你是因爲任何中間級壓縮和特定的細微之處做一個合格的存儲技術(無論是零還是一個是默認狀態,並且如果該位具有固定值,該位是否具有先前值更容易)將是不相關的。 – 2011-06-05 01:19:57

3

請注意粉碎非常依賴於文件系統和媒體。試圖在基於日誌的文件系統或存儲在智能(寫入級別)閃存上的文件系統上「碎化」文件不會讓你感覺很差。您必須至少編寫足夠的數據才能完成填充設備,以希望舊數據可能會被覆蓋一次。更可能的是,你將不得不編寫幾個較小的文件,並且當FS滿時,刪除一個,然後繼續寫一個新文件,以確保所有保留的空間也被覆蓋。那麼你可能會相當安全。大概。

我可能會說,因爲存儲介質/ FS可以決定一個塊是失敗(或者使用了太多的比較),並將其映射遠替換磁盤的其他部分來代替。這當然是一個阻塞的事情,所以任何更大的文件都不可能被重建。