簡介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() 加密
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=