文件纯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) ) ; / /高低位逆反输出

}

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

}

v5server:香港+美国机房,优质CN2网络云服务器,7折优惠,低至35元/月

v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...

NameCheap新注册.COM域名$5.98

随着自媒体和短视频的发展,确实对于传统的PC独立网站影响比较大的。我们可以看到云服务器商家的各种促销折扣活动,我们也看到传统域名商的轮番新注册和转入的促销,到现在这个状态已经不能说这些商家的为用户考虑,而是在不断的抢夺同行的客户。我们看到Namecheap商家新注册域名和转入活动一个接一个。如果我们有需要新注册.COM域名的,只需要5.98美元。优惠码:NEWCOM598。同时有赠送2个月免费域名...

RAKsmart美国VPS上市,活动期间5折抢购仅$30,$1.99/月

RAKsmart机房将于7月1日~7月31日推出“年中大促”活动,多重惊喜供您选择;爆款I3-2120仅30美金秒杀、V4新品上市,活动期间5折抢购、爆款产品持续热卖、洛杉矶+硅谷+香港+日本站群恢复销售、G口不限流量产品超低价热卖。美国VPS、日本VPS及香港VPS享全场7折优惠;爆款VPS $ 1.99/月限量秒杀,10台/天,售完即止, VPS 7折优惠码:VPS-TP-disRAKsmar...

c md5为你推荐
316不锈钢和304哪个好保温杯买304不锈钢的好,还是316不锈钢的好?涡轮增压和自然吸气哪个好涡轮增压与自然吸气哪个好华为p40和mate30哪个好华为p40手机。跟荣耀30哪个好?手机杀毒软件哪个好手机用杀毒软件,用哪样的好清理手机垃圾软件哪个好手机垃圾清理软件哪个好牡丹江教育云空间登录云空间怎么登入空间登录器用什么登录器可以登录QQ(除了QQ登录器)广东联通官方旗舰店广东联通沃商城广东联通网络传真怎么开通网络传真?电影票在哪买便宜电影票怎么买便宜
vps论坛 免费申请网站域名 132邮箱 国内免备案主机 winscp arvixe yardvps 免费主机 163网 56折 qingyun 域名转向 空间论坛 秒杀预告 tna官网 网页提速 网购分享 中国电信网络测速 申请免费空间 阿里云手机官网 更多