?? md5test.cpp
字號:
////////////////////////////////////////////////////////////////////////////////
// md5test.cpp : Defines the entry point for the console application.
//
#include "windows.h"
#include "string.h"
#include "md5.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
MD5_CTX md5;
MD5Init(&md5); //初始化用于md5加密的結構
unsigned char *encrypt; //存放于加密的信息
unsigned char decrypt[17];
DWORD ensize;
/*
printf("輸入要加密字符:") ; //存放加密后的結果
scanf("%s",encrypt); //輸入加密的字符
*/
if(argc!=2&&argc!=3&&argc!=4)
{
printf("===========================================\n MD5計算程序 v2.0\n -by E17-\n===========================================\n\n");
printf("Usage: md5 EncryptData.\n md5 -f DataFile");
return 0;
}
if(argc==3)
{
if(strcmp(argv[1],"-f"))
{
printf("===========================================\n MD5計算程序 v2.0\n -by E17-\n===========================================\n\n");
printf("Usage: md5 EncryptData.\n md5 -f DataFile");
return 0;
}
HANDLE hf=CreateFile(argv[2],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hf==INVALID_HANDLE_VALUE)
{
printf(" -Can't open file.\n");
return 0;
}
char *buf;
DWORD size=GetFileSize(hf,NULL);
buf=new char[size];
DWORD ds;
ReadFile(hf,buf,size,&ds,NULL);
if(ds!=size)
{
CloseHandle(hf);
printf(" -Something wrong when read file..\n");
return 0;
}
CloseHandle(hf);
ensize=size;
encrypt=(unsigned char *)buf;
}
else
{
encrypt=(unsigned char *)argv[1];
ensize=strlen(argv[1]);
}
MD5Update(&md5,encrypt,ensize); //對欲加密的字符進行加密
MD5Final(decrypt,&md5); //獲得最終結果
printf(" +Lenght: %d\n",ensize);
printf(" +MD5_32: ");
for(int i=0;i<16;i++)
printf("%02x",decrypt[i]);
printf("\n +MD5_16: ");
for(i=4;i<12;i++)
printf("%02x",decrypt[i]);
return 0;
}
/* 以上代碼在vc6下編譯通過,運行正常,能夠得到正確的md5值 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -