在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...