MD5訊息摘要的C 實現

2021-07-11 16:31:08 字數 629 閱讀 1589

計算md5是進行apk分析的最基本操作之一,在mobsf中,由於python的第三方庫十分豐富,要計算md5只需要匯入hashlib這個庫就可以了,但是在c++中,這個東西還得自己實現。

本文對github上的乙個md5計算的專案進行擴充套件,使得其可以進行字串md5計算的update操作和對檔案的md5計算。

原專案:

參考文章:

網上有很多關於md5計算的資料,但是幾乎都差不了多少,甚至**都一樣,例如github上的這個專案和那篇參考文章中專案,其實**都一樣,最多換了函式名稱或者刪掉了一些功能。

那篇參考文章中最後給出了原始碼,但是我編譯後得出的md5竟然是錯的……於是在github上找到了乙個md5專案,儘管只能計算字串的md5,而且不能追加,但是至少算出來是正確的。

接下來就是死磕原始碼…….這個過程是很痛苦的,但是不得不承認,這些**寫的很漂亮,邏輯清楚,復用性高(所以我才能進行擴充套件)。

#define bit_set(a,b) ((a) |= (1<<(b)))

#define bit_get(a,b) (((a) & (1<<(b)))>0?1:0)

#define bit_rst(a,b) ((a) &= ~(1<<(b)));

MD5摘要演算法實現

網上找到的實現md5函式 包括乙個標頭檔案md5.h和乙個原始檔md5.c,用下面的測試 test.c測試通過,各檔案依次如下 標頭檔案md5.h 1 ifndef md5 h 2 define md5 h 34 typedef struct 5md5 ctx 1011 12 define f x,...

MD5訊息摘要演算法的那些事

1.md5 message digest 訊息摘要演算法 1 md5演算法是一種雜湊 hash 演算法 摘要演算法,指紋演算法 不是一種加密演算法,任何長度的任意內容都可以用md5計算出雜湊值 2 無論字串還是檔案都可以計算md5值,無論字串長短,還是檔案大或者小,計算出來的md5值得位數相同 3 ...

MD5訊息摘要演算法的那些事

1.md5 message digest 訊息摘要演算法 1 md5演算法是一種雜湊 hash 演算法 摘要演算法,指紋演算法 不是一種加密演算法,任何長度的任意內容都可以用md5計算出雜湊值 2 無論字串還是檔案都可以計算md5值,無論字串長短,還是檔案大或者小,計算出來的md5值得位數相同 3 ...