[C#]FileInfo.Encrypt與FileInfo.Decrypt

  • 46650
  • 0
  • 2010-08-02

簡介FileInfo.Encrypt 與FileInfo.Decrypt的加密與解密方式

這是在小舖遇到的問題,問題是透過 FileInfo.Encrypt 將txt檔案加密後,txt檔內容並沒有任何變更,除了檔名變綠色。

針對此問題,首先我們先去查詢MSDN中對FileInfo.Encrypt與FileInfo.Decrypt的解釋

FileInfo.Encrypt : 加密檔案,只有使用加密檔案的帳戶才能將其解密。
FileInfo.Decrypt : 解密目前帳戶使用 Encrypt 方法加密的檔案。
http://msdn.microsoft.com/zh-tw/library/system.io.fileinfo.encrypt.aspx
http://msdn.microsoft.com/zh-tw/library/system.io.fileinfo.decrypt.aspx

在MSDN備註中有寫到這段話
Encrypt 方法可讓您加密檔案,以便只有用於呼叫這個方法的帳戶才能將其解密。使用 Decrypt 方法解密 Encrypt 方法所加密的檔案。

從這裡我們可以了解,Encrypt 的加密是以帳戶的方式,而不是普通打密碼才能使用此檔案的方式,以下做了一個小實驗,透過切換不同的帳戶來看 Encrypt 的效果

程式碼

        private void button1_Click(object sender, EventArgs e)
        {
            // 透過 FileInfo.Encrypt() 加密
            System.IO.FileInfo fio = new System.IO.FileInfo("C:\\Test.txt");  
            fio.Encrypt();  // 加密檔案,只有使用加密檔案的帳戶才能將其解密
        }


        private void button2_Click(object sender, EventArgs e)
        {
            // 透過 FileInfo.Decrypt() 解密
            System.IO.FileInfo fio = new System.IO.FileInfo("C:\\Test.txt");
            fio.Decrypt();  // 解密目前帳戶使用FileInfo.Encrypt()方法加密的檔案    
        }

執行結果,透過FileInfo.Encrypt()方法加密的檔案,切換到其他帳戶,檔案會存取被拒

 

 

附註,假如透過程式讀取受到FileInfo.Encrypt加密的檔案時,執行後會出現權限不足的錯誤訊息

參考

http://www.blueshop.com.tw/board/show.asp?subcde=BRD20090319174611YHE&fumcde=