windows c獲取檔案md5值確定是否改變

2021-10-08 17:34:15 字數 1559 閱讀 5574

在windows下做一些小工具的時候,希望做到根據配置檔案來對pc做一些配置下發的操作(例如改主機名改網路等),這就需要做到每個一段時間檢測配置檔案,並執行相應配置,但是當我們配置檔案沒有修改時,就不需要做配置了,因此需要對配置檔案進行md5檢測判斷檔案是否有改變

此處是獲取檔案的md5值,檔名在new類的時候傳入

byte* veryagent::ge***5()

hcryptprov hprov = null;

if (cryptacquirecontext(&hprov, null, null, prov_rsa_full, crypt_verifycontext) == false)//獲得csp中乙個金鑰容器的控制代碼

hcryptprov hhash = null;

if (cryptcreatehash(hprov, calg_md5, 0, 0, &hhash) == false)//初始化對資料流的hash,建立並返回乙個與csp的hash物件相關的控制代碼。這個控制代碼接下來將被crypthashdata呼叫。

dword dwfilesize = getfilesize(hfile, 0); //獲取檔案的大小

if (dwfilesize == 0xffffffff) //如果獲取檔案大小失敗

byte* lpreadfilebuffer = new byte[dwfilesize];

dword lpreadnumberofbytes;

if (readfile(hfile, lpreadfilebuffer, dwfilesize, &lpreadnumberofbytes, null) == 0)//讀取檔案

if (crypthashdata(hhash, lpreadfilebuffer, lpreadnumberofbytes, 0) == false)//has**件

delete lpreadfilebuffer;

closehandle(hfile);//關閉檔案控制代碼

byte *pbhash;

dword dwhashlen = sizeof(dword);

if (cryptgethashparam(hhash, hp_hashval, null, &dwhashlen, 0))//我也不知道為什麼要先這樣呼叫cryptgethashparam,這塊是參照的msdn

else

if (pbhash = (byte*)malloc(dwhashlen))

else

if (cryptgethashparam(hhash, hp_hashval, pbhash, &dwhashlen, 0))//獲得md5值

if (memcmp(mmd5sum, tmpmd5sum, 16) == 0)

else

} else

return true;

}

new的時候將檔名傳入類成員變數miniconfigpath以供使用

int main()

sleep(1000 * 1);

}}

python獲取檔案MD5值

在比較兩個資料夾內的兩個壓縮包是否相同,可以採用判斷兩個壓縮包的md5是否相等。md5也是有可能會判斷失誤的,了解一下md5碰撞演算法 python獲取檔案md5 import os import hashlib def get md5 filename if not os.path.isfile ...

js獲取檔案MD5值

要在web頁面中計算檔案的md5值,還好這個專案是只需相容現代瀏覽器的,不然要坑死了。其實對檔案進行md5,對於後端來說是及其簡單的。比如使用node.js,只要下面幾行 就可以了 var fs require fs var crypto require crypto function md5fil...

window linux下獲取檔案MD5

md5訊息摘要演算法 英語 md5 message digest algorithm 主要用於確保資訊傳輸過程的一致性校驗。首先介紹兩個工具 window winmd5free linux md5sum 這兩個工具的作用是驗證自己寫的程式獲取md5是否正確。1 string getfilemd5 c...