码迷,mamicode.com
首页 > 系统相关 > 详细

linux之md5库

时间:2014-06-22 15:37:03      阅读:1261      评论:0      收藏:0      [点我收藏+]

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



linux之md5库,布布扣,bubuko.com

linux之md5库

标签:opsnssl   md5   文件校验   加密   linux c   

原文地址:http://blog.csdn.net/zsp_skyer/article/details/32704251

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!