linux之md5库

在使用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



linux之md5库,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。