标签:opsnssl md5 文件校验 加密 linux c
在使用md5函数之前要先安装openssl,以及libssl-dev。
包含头文件:#include <openssl/md5.h>
两种方式:
第一种:
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 <openssl/md5.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
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<<md5buf<<endl;
fclose(fd);
return 0;
}密码加密
#include <openssl/md5.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
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<<md5buf<<endl;
return 0;
}编译时指定库文件:-lcrypto
标签:opsnssl md5 文件校验 加密 linux c
原文地址:http://blog.csdn.net/zsp_skyer/article/details/32704251