C语言_MD5文件校验
MD5文件校验C语言实现
一.程序截图
二.程序代码及注释
#include
#include
#include
#include
#include
#include
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
externWINBASEAPIHWNDWINAPIGetConsoleWindow();
#defineF(x,y,z)(((x)&(y))|((~x)&(z)))
#defineG(x,y,z)(((x)&(z))|((y)&(~z)))
#defineH(x,y,z)((x)^(y)^(z))
#defineI(x,y,z)((y)^((x)|(~z)))
#defineRL(x,y)(((x)<>(32-(y)))) //x 向左循环移y位
#definePP(x)(x<<24)|((x<<8)&0x 0000)|((x>>8)&0x 00)|(x>>24) //将x高低位互换, 如
PP(aabbccdd)=ddccbbaa
#defineFF(a,b,c,d,x,s,ac)a=b+(RL((a+F(b,c,d)+x+ac),s))
#defineGG(a,b,c,d,x,s,ac)a=b+(RL((a+G(b,c,d)+x+ac),s))
#defineHH(a,b,c,d,x,s,ac)a=b+(RL((a+H(b,c,d)+x+ac),s))
#defineII(a,b,c,d,x,s,ac)a=b+(RL((a+I(b,c,d)+x+ac),s))
unsignedA,B,C,D,a,b,c,d,i,len,flen[2],x[16]; //i临时变量,len文件长,flen[2]为位二进制表示的文
件初始长度//x[16]
intfile_choose=0;//文件导入初始状态 //全局变量
charfilename2[30]="MD5_result.txt";//默认文件位置
voidmenu();
voidclear();
voidjs();
voidmd5();
voidsave();
charfilename[100]; //文件名
FILE*fp;
intmain(intargc,char*argv[])
{
intd1,d2,d,x,xy=0,i,k=0,s[100],ch,dir=40;
structre
{
inttop;
intleft;
intright;
intbottom;
}rt[7];
RECTrect;
HWNDhwnd;//窗口句柄
HDChdc,dc;//画图设备
HBRUSHhbr,hbr2;
COORDpos3_1= {1,4},pos2_1= {1,4},pos2_2= {1,5},pos2_3= {1,6},pos2_4= {1,7};
INPUT_RECORDmouseRec;
DWORDstate=0,res=0;
POINTpt;
HPENpn;
HANDLEhOut,hIn;
hwnd=GetConsoleWindow();
hdc=GetDC(hwnd);
dc=GetDC(hwnd);
SelectObject(dc,hbr);
for(rt[1].left=150,i=2;i<=3;i++) rt[i].left=rt[i-1].left+110;
for(rt[1].right=213,i=2;i<=3;i++) rt[i].right=rt[i-1].right+110;
for(i=0;i<=3;i++)rt[i].top=40;
for(i=0;i<=3;i++)rt[i].bottom=63;
hbr=CreateSolidBrush(RGB(180,180,180));
SelectObject(dc,hbr);
fo