2012-02-16 40 views
0

最近,我熟悉了這個命名空間,並且對它做了一些工作。現在我想檢測存儲的加密文件。我在我的軟件中有一個屬性,它讓用戶決定生成的文件是否應該被加密。通過這種方式,當用戶打開他生成的文件時,我應該知道它是否被加密或不解密並提取真實數據。如何使用System.Security.Cryptography檢測加密文件

回答

0

我不認爲你可以「檢測」文件是加密的。這會有點失敗的目的,不是嗎?但是,您可以嘗試解密可疑的加密文件並驗證結果是否符合您的期望。 (在解密的數據中查找特定的簽名。)

+0

是的,這是真的。我正在尋找一種方法,讓加密的個人知道這個文件是否被加密。我的意思是我的自我。 – MahanGM 2012-02-16 19:54:45

+2

如果使用或不使用加密,則不要隱藏加密的目的;加密用於提供純文本數據的機密性。可以很容易地檢測到CBC加密:文件具有與塊大小* N相同的長度,並且看起來像隨機數據。問題在於,這可能不足以將其與純文本區分開來。 – 2012-02-18 01:46:18

2

加密文件的性質是它們沒有任何識別標記,除了那些在加密後自行添加的標記。它們只是一個隨機看似的字節數組。如果他們有任何可以檢測到的模式,這將是一個糟糕的加密。

不過,也有一些方法可以採取:

  • 改變文件的文件擴展名你加密的東西,你定義:例如MyFile.enc
  • 把標記其他地方的文件名:Myfile.encrypted.txt
  • 前面加上一些字節的文件內容本身,東西足夠長的時間,這將是不太可能隨機出現
+0

感謝您的建議。我認爲最好是單程票!我的意思是,讓我們只加密所有文件!不是一些做,其他人不是。 – MahanGM 2012-02-16 19:51:09

+0

將文件擴展名更改爲您自己的文件擴展名將是最好的方法。這是我們如何處理它。 – tsells 2012-02-16 20:40:37

+0

表示同意,這是最容易解析出來的,而Windows資源管理器(以及我認爲其他操作系統的文件探索器)爲它們使用了不同的圖標。 – 2012-02-17 03:22:29

1

您可以嘗試正常讀取文件,如果讀取的數據不符合您的期望,請嘗試解密。或者,如果需要解密,您可以在文件之前添加一個[decrypt]標籤。

+0

這是一個很好的竅門,我在想這一段時間。謝謝。 – MahanGM 2012-02-16 19:51:48

+1

我不會這樣做,因爲它不是「快速失敗」,並且如果第一部分解析等,您可能會遇到麻煩。說第一個字節表示元素數量和加密設置他們在0000,是一個有效的文件? – 2012-02-18 01:43:15

+0

@owlstead,是的,這可能是另一個麻煩。我想我會加密所有的文件,然後我會知道每個進入的文件都被加密。 – MahanGM 2012-02-18 06:31:45