EncryptFile函式保護你的檔案

2021-08-27 13:29:07 字數 1137 閱讀 2047

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

加密函式是

bool encryptfile(

lpctstr lpfilename //檔名

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

解密函式是

booldecryptfile(

lpctstr lpfilename, // 要解密的檔名或目錄名

dword dwreserved // 保留引數,必須為0

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

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

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

#include "windows.h"

void print_usage()

int main(int argc, char* argv)

if(*argv[1]=='e')

}else if(*argv[1]=='d')

}else

return 0;

}//程式全部結束

經過加密的檔案,在explorer中會顯示為具有「加密」屬性。其實,你也可以在explorer中,選中檔案->右鍵選單->檢視屬性->高階,然後選擇「加密內容以保護資料」,它們實現的功能是完全一樣的。另外,還可以使用fileencryptionstatus來獲取乙個檔案或目錄的與efs有關的屬性,比如該檔案是否被加密。

程序保護原理Hook函式Openprocess

win32子系統 win32是windows的乙個子系統,還有另外的子系統如os 2 posix等,不同的子系統系統提供了不同的程式設計介面,即api,一般說的api指的就是win32 api。win32子系統是最純正的windows子系統,提供了大量的api函式,程式設計師只需要熟練的使用這些ap...

繼電保護原理7 母線保護

目錄 第八章 母線保護 8.1 裝設母線保護的基本原則 一 對母線保護的要求 二 裝設母線保護的基本原則 三 母線保護基本原理 8.2 單母線完全差動保護 一 作用原理 8.3 電流比相式母線保護 一 工作原理 8.4 雙母線同時執行時,母線保護的實現方法 8.4.1雙母線同時執行,元件固定連線的電...

PWN 基礎篇 保護函式和溢位例項

二 神奇的小知識 三 例項教學 棧溢位保護是一種緩衝區溢攻擊緩解手段,當函式存在緩衝區溢位攻擊漏洞時,攻擊者可以覆蓋棧上的返回位址來讓shellcode能夠得到執行,當啟動棧保護後,函式開始執行的時候會顯往棧裡插入cookie的資訊,當函式真正返回的時候會驗證cookie資訊是否合法,如何不合法就停...