window linux下獲取檔案MD5

2022-08-26 17:27:13 字數 830 閱讀 9409

md5訊息摘要演算法(英語: md5 message-digest algorithm), 主要用於確保資訊傳輸過程的一致性校驗。

首先介紹兩個工具:

window: winmd5free

linux: md5sum

這兩個工具的作用是驗證自己寫的程式獲取md5是否正確。

1

string getfilemd5(const

string&file)212

return

md5.md5();

13 }

邏輯上,看似沒有問題的一段**。

實際驗證的情況:

window下獲取的md5與第三方獲取的值一致;

linux下獲取的md5與第三方獲取的值不一致。

也就是說計算md5時的輸入不一致,導致的結果不一致。

問題分析:

上面的**最有可能出問題的地方在用strlen獲取buffer的大小。strlen以『\0』標誌確定函式讀取終止。從檔案中讀取的二進位制資料中間是可能存在『\0』的情況,列印每次strlen返回的結果,可以驗證這個情況。

問題的原因已經找到,那麼如何解決這個問題呢?

如果你熟悉c++ io操作,io庫已經考慮過這個問題。獲取每次讀取的大小,使用fstream.gcount()返回正確讀取大小。

正確的**

1

string getfilemd5(const

string&file)211

return

md5.md5();

12 }

工作中遇到這樣的問題,經歷過多次嘗試才發現這個問題,在此處記錄下。

GMS環境下獲取泰文版Google法律資訊異常

description gms環境下,成功連線wifi,進入設定 關於手機 法律資訊 google法律資訊 選擇泰文,直接退出google法律資訊介面,返回到法律資訊介面 選擇其他語言都可以成功show出google法律資訊 solution 請修改code,修改部分如下 mtk change st...

獲取文版版本資訊

通過api getfileversioninfosize,getfileversioninfo,verqueryvalue獲取版本資訊 首先,在mfc生成的應用程式框架中,版本資訊中有fileversion 和 productversion 兩項 productversion代表該產品的版本,fil...

java讀取文獲取檔案路徑

string directory d 呵呵 3059 此目錄下放9張 listf new arraylist file dir new file directory if dir.isfile return 判斷是否是檔案,如果是檔案則返回。file files dir.listfiles 列出當前...