标签: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