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

}

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

}

Spinservers:美国圣何塞机房少量补货/双E5/64GB DDR4/2TB SSD/10Gbps端口月流量10TB/$111/月

Chia矿机,Spinservers怎么样?Spinservers好不好,Spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting So...

HostNamaste$24 /年,美国独立日VPS优惠/1核1G/30GB/1Gbps不限流量/可选达拉斯和纽约机房/免费Windows系统/

HostNamaste是一家成立于2016年3月的印度IDC商家,目前有美国洛杉矶、达拉斯、杰克逊维尔、法国鲁贝、俄罗斯莫斯科、印度孟买、加拿大魁北克机房。其中洛杉矶是Quadranet也就是我们常说的QN机房(也有CC机房,可发工单让客服改机房);达拉斯是ColoCrossing也就是我们常说的CC机房;杰克逊维尔和法国鲁贝是OVH的高防机房。采用主流的OpenVZ和KVM架构,支持ipv6,免...

wordpress专业外贸建站主题 WordPress专业外贸企业网站搭建模版

WordPress专业外贸企业网站搭建模版,特色专业外贸企业风格 + 自适应网站开发设计 通用流行的外贸企业网站模块 + 更好的SEO搜索优化和收录 自定义多模块的产品展示功能 + 高效实用的后台自定义模块设置!采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera...

c md5为你推荐
软银集团日本软银是什么呀?304和316不锈钢哪个好304不锈钢和316不锈钢哪个好p图软件哪个好用p图软件哪个好朱祁钰和朱祁镇哪个好大家怎么看明英宗和明代宗炒股软件哪个好用用手机股票软件哪个好电陶炉和电磁炉哪个好电陶炉和电磁炉哪个好车险哪个好人保和平安车险哪个好群空间登录手机如何登录腾讯qq群空间qq空间登录不上qq空间登不进去 怎么办yy空间登录怎样进入YY主播的空间
域名服务dns的主要功能为 万网域名解析 linode代购 私服服务器 cloudstack 紫田 rak机房 softbank官网 美国php主机 免费个人网站申请 台湾谷歌网址 hinet 免费防火墙 域名和空间 河南移动m值兑换 常州联通宽带 国外的代理服务器 97rb 中国电信宽带测速 windows2008 更多