文件纯c语言实现md5算法(Pure C language implementation of MD5 algorithm)

c md5  时间:2021-01-27  阅读:()

纯c语言实现md5算法Pure C language implementation of MD5algorithm

Here is the code

Baidu needs points. I upload an integral that doesn't needpoints.

/ / pure to delete this comment can be confused with.#include<stdio.h>

#define F (x, y, z) (( (x) & (y) ) | ( (~x) & (z)))

#define G (x, y, z) (( (x) & (z) ) | ( (y) & (~z)))

#def ine, H (x, y, z) ( (x) ^ (y) ^ (z))

#define I (x, y, z) ((y) ^ ( (x) | (~z)) )

/ / pure to delete this comment can be confused with.#define RL (x, y) (((x) , (y) ( | ) (x) "(32 - (y)) )) //x y leftshift

#def ine PP (x) (x<<24) | ((x<<8) &0xff0000) | ((x>>8) &0xff00)| (x>>24) / / x high and low swap, such as PP (aabbccdd)=ddccbbaa

#def ine, FF (a, B, C, D, x, s, AC) a = B + (RL ((a +F (B, C,d) + X + AC) , s) )

#def ine, GG (a, B, C, D, x, s, AC) a = B + (RL ((a +G (B, C,d) + X + AC) , s) )

#def ine, HH (a, B, C, D, x, s, AC) a = B + (RL ((a +H (B, C,d) + X + AC) , s) )

#def ine, I I (a, B, C, D, x, s, AC) a = B + (RL ((a + I (B, C,d) + X + AC) , s) )

Unsigned, A, C, D, a, B, B, C, D, I, len, f len[2] , x[16], , //itemporary variables, len file length, and flen[2] initial filelength of binary binary representation

Char filename[200] ; / / f ile name

FILE *fp;

/ / pure to delete this comment can be confused with.Void MD5 () {//MD5 core algorithm for the 64 round

A=A, b=B, c=C, d=D;

/**//* Round * 1

FF (a, B, C, D, x[, 0] , 7, 0xd76aa478) ; /**//* 1.

FF (D, a, B, C, x[, 1] , 12, 0xe8c7b756) ; /**//* 2.

FF (C, D, a, B, x[, 2] , 17, 0x242070db) ; /**//* 3.

FF (B, C, D, a, x[, 3] , 22, 0xc1bdceee) ; /**//* 4.FF (a, B, C, D, x[, 4] , 7, 0xf57c0faf) ; /**//* 5.FF (D, a, B, C, x[, 5] , 12, 0x4787c62a) ; /**//* 6.FF (C, D, a, B, x[, 6] , 17, 0xa8304613) ; /**//* 7.FF (B, C, D, a, x[, 7] , 22, 0xf d469501) ; /**//* 8.FF (a, B, C, D, x[, 8] , 7, 0x698098d8) ; /**//* 9.FF (D, a, B, C, x[, 9] , 12, 0x8b44f7af) ; /**//* 10.FF (C, D, a, B, x[10], 17, 0xffff5bb1) ; /**//* 11.FF (B, C, D, a, x[11], 22, 0x895cd7be) ; /**//* 12.FF (a, B, C, D, x[12], 7, 0x6b901122) ; /**//* 13.FF (D, a, B, C, x[13], 12, 0xfd987193) ; /**//* 14.FF (C, D, a, B, x[14], 17, 0xa679438e) ; /**//* 15.FF (B, C, D, a, x[15], 22, 0x49b40821) ; /**//* 16./**//* Round * 2

GG (a, B, C, D, x[, 1] , 5, 0xf61e2562) ; /**//* 17.

GG (D, a, B, C, x[, 6] , 9, 0xc040b340) ; /**//* 18.GG (C, D, a, B, x[11], 14, 0x265e5a51) ; /**//* 19.GG (B, C, D, a, x[, 0] , 20, 0xe9b6c7aa) ; /**//* 20.GG (a, B, C, D, x[, 5] , 5, 0xd62f105d) ; /**//* 21.GG (D, a, B, C, x[10], 9, 0x02441453) ; /**//* 22.GG (C, D, a, B, x[15], 14, 0xd8a1e681) ; /**//* 23.GG (B, C, D, a, x[, 4] , 20, 0xe7d3fbc8) ; /**//* 24.GG (a, B, C, D, x[, 9] , 5, 0x21e1cde6) ; /**//* 25.GG (D, a, B, C, x[14], 9, 0xc33707d6) ; /**//* 26.GG (C, D, a, B, x[, 3] , 14, 0xf4d50d87) ; /**//* 27.GG (B, C, D, a, x[, 8] , 20, 0x455a14ed) ; /**//* 28.GG (a, B, C, D, x[13], 5, 0xa9e3e905) ; /**//* 29.GG (D, a, B, C, x[, 2] , 9, 0xfcefa3f8) ; /**//* 30.GG (C, D, a, B, x[, 7] , 14, 0x676f02d9) ; /**//* 31.GG (B, C, D, a, x[12], 20, 0x8d2a4c8a) ; /**//* 32./**//* Round * 3

HH (a, B, C, D, x[, 5] , 4, 0xfffa3942) ; /**//* 33.

Hh (D, a, B, C, X [8], 11, 0x8771f681) ; / * * / / * 34 * /Hh (C, D, a, B, X [11] , 16, 0x6d9d6122) ; / * * / / * 35 * /Hh (B, C, D, a, x] [14, 23, 0xfde5380c) ; / * * / / * 36 * /Hh (A, B, C, D, X [1], 4, 0xa4beea44) ; / * * / / * * / 37Hh (D, a, B, C, X [4], 11, 0x4bdecfa9) ; / * * / / * 38 * /Hh (C, D, a, B, X [7], 16, 0xf6bb4b60) ; / * * / / * * / 39Hh (B, C, D, a, X [10] , 23, 0xbebfbc70) ; / * * / / * 40 * /Hh (A, B, C, D, X [13] , 4, 0x289b7ec6) ; / * * / / * * / 41Hh (D, a, B, C, X [0], 11, 0xeaa127fa) ; / * * / / * * / 42Hh (C, D, a, B, X [3], 16, 0xd4ef3085) ; / * * / / * * / 43Hh (B, C, D, a, x] [6, 23, 0x04881d05) ; / * * / / * * / 44Hh (A, B, C, D, X [9], 4, 0xd9d4d039) ; / * * / / * 45 * /Hh (D, a, B, C, X [11, 12], 0xe6db99e5) ; / * * / / * 46 * /Hh (C, D, a, B, x] [15, 16, 0x1fa27cf8) ; / * * / / * 47 * /

Hh (B, C, D, a, X [2], 23, 0xc4ac5665) ; / * * / / * * / 48/ /纯是为了混淆用,删除本注释即可

/ * * / / * * / 4 round

I I (A, B, C, D, X [0], 6, 0xf4292244) ; / * * / / * * / 49I I (D, a, B, C, x] [7, 10, 0x432aff97) ; / * * / / * 50 * /II (C, D, a, B, X [14] , 15, 0xab9423a7) ; / * * / / * * / 51(B, C, D, a, X [5], 21, 0xfc93a039) ; / * * / / * 52 * /II (A, B, C, D, X [12] , 6, 0x655b59c3) ; / * * / / * * /II (D, a, B, C, X [3], 10, 0x8f0ccc92) ; / * * / / * * / 54II (C, D, a, B, X [10] , 15, 0xffeff47d) ; / * * / / * 55 * /(B, C, D, a, X [1], 21, 0x85845dd1) ; / * * / / * * / 56II (A, B, C, D, X [8], 6, 0x6fa87e4f) ; / * * / / * * / 57II (D, a, B, C, X [15] , 10, 0xfe2ce6e0) ; / * * / / * * / 58I I (C, D, a, B, X [6], 15, 0xa3014314) ; / * * / / * * / 59(B, C, D, a, X [13] , 21, 0x4e0811a1) ; / * * / / * 60 * /II (A, B, C, D, X [4], 6, 0xf7537e82) ; / * * / / * * / 61

I I (D, a, B, C, X [10, 11], 0xbd3af235) ; / * * / / * 62 * /II (C, D, a, B, X [2], 15, 0x2ad7d2bb) ; / * * / / * * / 63(B, C, D, a, x] [9, 21, 0xeb86d391) ; / * * / / * * / 64A + = a;

B + = B;

C + = C;

D = D +;

/ /纯是为了混淆用,删除本注释即可

}

/ /纯是为了混淆用,删除本注释即可

/ /纯是为了混淆用,删除本注释即可

Main() {

While (1) {/ /纯是为了混淆用,删除本注释即可

Printf ("Input File") ;

Gets (f ilename) ; / /用get函数,避免scanf以空格分割数据,

If (filename [0] == strlen (34) fi lename (f ilename) - 1] = 0,strcpy (fi lename, f ilename + 1) ; / /支持文件拖曳,但会多出双引号,这里是处理多余的双引号

If ( ! Strcmp (fi lename, "Exit") exit (0) ; / /输入exit退出If ( ! (FP=fopen (filename, "rb"))) {printf ("can not open thisf ile! \ n ") ; } / /以二进制打开文件continue;

Fseek (FP, 0, Seek _ end) ; / /文件指针转到文件末尾

If ( (Len = ftell () (FP)) = = - 1) {printf ("Sorry! Can notcalculate which files larger than 2 GB. \ n ") ; fclose (FP) ;continue; } / / ftell函数返回long,最大为2gb,超出返回- 1Rewi nd (FP) ; / /文件指针复位到文件头

A=b =0x67452301, 0xefcdab89 0x98badcfe, c = D= 0x10325476;/ /初始化链接变量

FLEN [1] = len / 0x20000000; / / f len单位是b it

F LEN [0] = (L EN% 0x 20000000) * 8;

Memset (X, 0.64) ; / /初始化x数组为0

Fread (& X, 4. 16, FP) ; / /以4字节为一组,读取16组数据For (i = 0; I < Len / 64; I + +) {/ /循环运算直至文件结束MD5 () ;

Memset (x, 0.64) ;

F REA D (& X, 4. 16, F P) ;

}

( (char*) (x) [len%64] = 128; //文件结束补1,补0操作, 128二进制即10000000

If (len% 64 > 55) MD5 () , memset (x, 0.64) ;

Memcpy (x + 14, flen, 8) ; / /文件末尾加入原文件的bit长度MD5 () ;

Fclose (PF) ;

Printf ("MD5 Code:%08x%08x%08x%08x \ n", PP (PP) , (b) , (c)PP, PP (d) ) ; / /高低位逆反输出

}

/ /纯是为了混淆用,删除本注释即可

}

萤光云(13.25元)香港CN2 新购首月6.5折

萤光云怎么样?萤光云是一家国人云厂商,总部位于福建福州。其成立于2002年,主打高防云服务器产品,主要提供福州、北京、上海BGP和香港CN2节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。目前萤光云推出北京云服务器优惠活动,机房为北京BGP机房,购买北京云服务器可享受6.5折优惠+51元代金券(折扣和代金券可叠加使用)。活动期间还支持申请免费试用,需提交工单开通免费试用体验...

香港服务器多少钱一个月?香港云服务器最便宜价格

香港服务器多少钱一个月?香港服务器租用配置价格一个月多少,现在很多中小型企业在建站时都会租用香港服务器,租用香港服务器可以使网站访问更流畅、稳定性更好,安全性会更高等等。香港服务器的租用和其他地区的服务器租用配置元素都是一样的,那么为什么香港服务器那么受欢迎呢,香港云服务器最便宜价格多少钱一个月呢?阿里云轻量应用服务器最便宜的是1核1G峰值带宽30Mbps,24元/月,288元/年。不过我们一般选...

乌云数据(10/月),香港cera 1核1G 10M带宽/美国cera 8核8G10M

乌云数据主营高性价比国内外云服务器,物理机,本着机器为主服务为辅的运营理念,将客户的体验放在第一位,提供性价比最高的云服务器,帮助各位站长上云,同时我们深知新人站长的不易,特此提供永久免费虚拟主机,已提供两年之久,帮助了上万名站长从零上云官网:https://wuvps.cn迎国庆豪礼一多款机型史上最低价,续费不加价 尽在wuvps.cn香港cera机房,香港沙田机房,超低延迟CN2线路地区CPU...

c md5为你推荐
月付百万的女人们我们家的女人们92集在线观看 韩剧我们家的女人们92中字 我们家的女人们93集快播下载唐人社美国10次啦我看到罗显琪第一眼就喜欢他了!当中我们一共见过10次面,也发生过两次关系! 但是他有女朋友对我也只是一时兴起吧,所以第十次见面之后,我们再没有联系,但是现在我大姨妈晚了很多天了,我担心是否怀孕,如果有的话,我又不想打掉,该找他吗?骁龙765g和骁龙865哪个好请问苹果的a13处理器和骁龙865综合性能两个相差大不大?以及打游戏哪个更流畅?轿车和suv哪个好SUV和轿车哪个好点?纠结电视直播软件哪个好目前最好的电视直播软件是什么?炒股软件哪个好用用手机股票软件哪个好播放器哪个好播放器哪个好用群空间登录怎样进入群空间飞信空间登录移动飞信客户端怎么登陆???辽宁联通网上营业厅网中国联通的初始服务密码一般是多少
黑龙江域名注册 网页空间租用 如何注册网站域名 256m内存 webhostingpad 2014年感恩节 42u机柜尺寸 抢票工具 香港新世界电讯 php探针 新站长网 网站实时监控 150邮箱 促正网秒杀 个人域名 免费申请网站 下载速度测试 论坛主机 wordpress中文主题 江苏双线 更多