MD5算法 C语言实现

本文介绍了如何使用C语言实现MD5算法,包括计算字符串和文件的MD5值。代码已在VS2013环境下成功编译运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MD5算法 C语言实现

实现了计算字符串和文件的MD5
算法来自百度百科
VS2013下成功编译运行,速度一般吧。。。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#define MD5_ROTL(a,b) (MD5_tmp=(a),((MD5_tmp>>(32-b))&(0x7fffffff>>(31-b)))|(MD5_tmp<<b))   //循环左移
#define MD5_F(X,Y,Z) ((X&Y)|((~X)&Z))
#define MD5_G(X,Y,Z) ((X&Z)|(Y&(~Z)))
#define MD5_H(X,Y,Z) (X^Y^Z)
#define MD5_I(X,Y,Z) (Y^(X|(~Z)))
#define MD5_FF(a,b,c,d,Mj,s,ti) a=b+MD5_ROTL((a+MD5_F(b,c,d)+Mj+ti),s)
#define MD5_GG(a,b,c,d,Mj,s,ti) a=b+MD5_ROTL((a+MD5_G(b,c,d)+Mj+ti),s)
#define MD5_HH(a,b,c,d,Mj,s,ti) a=b+MD5_ROTL((a+MD5_H(b,c,d)+Mj+ti),s)
#define MD5_II(a,b,c,d,Mj,s,ti) a=b+MD5_ROTL((a+MD5_I(b,c,d)+Mj+ti),s)
#define MD5main \
{MD5_FF(a, b, c, d, M[0], 7, 0xd76aa478);\
MD5_FF(d, a, b, c, M[1], 12, 0xe8c7b756);\
MD5_FF(c, d, a, b, M[2], 17, 0x242070db);\
MD5_FF(b, c, d, a, M[3], 22, 0xc1bdceee);\
MD5_FF(a, b, c, d, M[4], 7, 0xf57c0faf);\
MD5_FF(d, a, b, c, M[5], 12, 0x4787c62a);\
MD5_FF(c, d, a, b, M[6], 17, 0xa8304613);\
MD5_FF(b, c, d, a, M[7], 22, 0xfd469501);\
MD5_FF(a, b, c, d, M[8], 7, 0x698098d8);\
MD5_FF(d, a, b, c, M[9], 12, 0x8b44f7af);\
MD5_FF(c, d, a, b, M[10], 17, 0xffff5bb1);\
MD5_FF(b, c, d, a, M[11], 22, 0x895cd7be);\
MD5_FF(a, b, c, d, M[12], 7, 0x6b901122);\
MD5_FF(d, a, b, c, M[13], 12, 0xfd987193);\
MD5_FF(c, d, a, b, M[14], 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值