EncryptFile函數保護你的檔案

來源:互聯網
上載者:User

        在程式開發過程中,經常遇到需要保護使用者資訊和私人資料不被他人竊取的情況,也就是要對資料進行加密。在Win2000以前,要對資料進行加密和解密操作,一般要使用CryptAPI函數,相當煩瑣。幸運的是,從Win2000開始,作業系統從核心的層級上提供了對檔案進行加密和解密的函數,而且使用起來相當簡單。

      加密函數是
      BOOL EncryptFile(
          LPCTSTR lpFileName    //檔案名稱
      );

      參數lpFileName可以是檔案名稱,也可以是目錄名,如果是目錄名,那麼以後在該目錄下建立的檔案都將被自動加密。如果函數執行成功,將返回非零值,否則,傳回值為零,可以通過GetLastError()函數得到錯誤碼。

      解密函數是
      BOOL DecryptFile(
          LPCTSTR lpFileName,      // 要解密的檔案名稱或目錄名
          DWORD dwReserved       // 保留參數,必須為0
      );

      參數lpFileName如果是目錄名,則該目錄下的所有檔案將被解密,並且以後在該目錄下建立的檔案不再被自動加密。如果函數執行成功,將返回非零值,否則,傳回值為零,可以通過GetLastError()函數得到錯誤碼。

      這兩個函數實際上是把檔案系統和Windows的系統帳戶幫定起來,使用者加密檔案後,自己仍然可以隨意查看(不需要先解密);但具有相同權限等級的其他使用者不能查看,當他們開啟你加過密的檔案時,將得到“拒絕訪問”的警告資訊。還要注意的是,比你權限等級高的使用者(超級管理員),仍然可以隨意查看你的檔案。

      下面是一小段例子程式,編譯該程式後,你可以通過命令列進行加密解密操作。

//EncryptFile.exe

#include "windows.h"
void print_usage()
{
    printf("使用方法:encrypt <選項> <檔案名稱或目錄名>\n");
    printf("            選項: e         加密\n");
    printf("                   d         解密\n");
}
int main(int argc, char* argv[])
{
if(argc!=3){
    print_usage();
    return 0;
}

if(*argv[1]=='e'){
    BOOL rc=EncryptFile(argv[2]);
    if(rc==0){
     printf("發生錯誤:%d",GetLastError());
     return 0;
    }
}else if(*argv[1]=='d'){
    BOOL rc=DecryptFile(argv[2],0);
    if(rc==0){
     printf("發生錯誤:%d",GetLastError());
     return 0;
    }
}else{
    print_usage();
}
return 0;
}
//程式全部結束

      經過加密的檔案,在Explorer中會顯示為具有“加密”屬性。其實,你也可以在Explorer中,選中檔案->右鍵菜單->查看屬性->進階,然後選擇“加密內容以保護資料”,它們實現的功能是完全一樣的。另外,還可以使用FileEncryptionStatus來擷取一個檔案或目錄的與EFS有關的屬性,比如該檔案是否被加密。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.