在使用md5函数之前要先安装openssl,以及libssl-dev。
包含头文件:#include
两种方式:
第一种:
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data, size_t len);
int MD5_Final(unsigned char *md, MD5_CTX *c);
三个函数联合使用,适合文件校验。
第二种:
unsigned char *MD5(const unsigned char *d, unsigned long n,unsigned char *md);
适合密码加密。
例
文件校验
#include
#include
#include
#include
using namespace std;
int main()
{
FILE *fd=fopen("tmp.txt","r");
MD5_CTX c;
unsigned char md[16];
int len;
char tmp[3]={'\0'}, md5buf[33]={'\0'};
unsigned char buffer [1024]={'\0'};
MD5_Init(&c);
while( 0 != (len = fread(buffer, 1, 1024, fd) ) )
{
MD5_Update(&c, buffer, len);
}
MD5_Final(md,&c);
for(int i = 0; i < 16; i++)
{
sprintf(tmp,"%02X",md[i]);
strcat(md5buf,tmp);
}
cout<
fclose(fd);
return 0;
}
密码加密
#include
#include
#include
#include
using namespace std;
int main()
{
string data = "helloworld";
unsigned char md[16];
int i;
char tmp[3]={'\0'}, md5buf[33]={'\0'};
MD5((unsigned char *)data.c_str(),data.length(),md);
for( int i=0; i<16; i++ ){
sprintf(tmp,"%02X",md[i]);
strcat(md5buf,tmp);
}
cout<
return 0;
}
编译时指定库文件:-lcrypto