代码拉取完成,页面将自动刷新
从OpenSSL-1.0.2r源码中移植的C语言MD5算法
公司项目要用到MD5。看到OpenSSL源码的Crypto/Md5目录下有md5.c、md5.h文件, 以为作者们把MD5封装到了这两个文件中,可直接拷贝使用,其实不然, 于是从各个文件中剥离出了相关内容,封装到自己的md5.c、md5.h中。
目前在32位环境中正常运行。
md5.h第70行,有一个确定大小端模式的宏,根据实际情况定义,
DATA_ORDER_IS_BIG_ENDIAN
或DATA_ORDER_IS_LITTLE_ENDIAN
,
如果MD5计算结果不对,可能是这个宏和实际情况不符。
/*
* DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
* It must be determined according to the actual situation.
*/
#define DATA_ORDER_IS_LITTLE_ENDIAN
示例代码如下:
#include "md5.h"
int main(void)
{
MD5_CTX ctx;
unsigned char test_data[] ="test123";
unsigned char res[16];
MD5_Init(&ctx);
MD5_Update(&ctx, test_data, 7);
MD5_Final(res, &ctx); /* MD5结果保存在res中 */
return 0;
}
如果是8位机,md5.h中MD5_LONG
和MD32_REG_T
要改成long型,暂未实际测试。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。