MD5消息摘要的C++实现

前言

计算MD5是进行apk分析的最基本操作之一,在MobSF中,由于python的第三方库十分丰富,要计算md5只需要导入hashlib这个库就可以了,但是在C++中,这个东西还得自己实现。
本文对github上的一个md5计算的项目进行扩展,使得其可以进行字符串md5计算的update操作和对文件的md5计算。

项目地址

原项目:https://github.com/JieweiWei/md5
我的项目地址:https://github.com/LeeHDsniper/md5
参考文章:http://www.cnblogs.com/flying_bat/archive/2007/09/25/905133.html

环境

  • Ubuntu16.04LTS
  • g++ 5.3.1

Note

网上有很多关于md5计算的资料,但是几乎都差不了多少,甚至代码都一样,例如github上的这个项目和那篇参考文章中项目,其实代码都一样,最多换了函数名称或者删掉了一些功能。
那篇参考文章中最后给出了源码,但是我编译后得出的md5竟然是错的……于是在github上找到了一个md5项目,尽管只能计算字符串的md5,而且不能追加,但是至少算出来是正确的。
接下来就是死磕源码…….这个过程是很痛苦的,但是不得不承认,这些代码写的很漂亮,逻辑清楚,复用性高(所以我才能进行扩展)。

Some skill

#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))); 

你可能感兴趣的:(C++,MD5,apk行为分析)