Linux下openssl提供了一系列哈希及加密的函数,如果调用openssl提供的MD5函数生成任意字符串的MD5呢?下面提供了一段代码实现Linux下c字符串生成md5的函数。
具体代码:
#include "stdio.h"
#include <string.h>
#include <stdlib.h>
#include <openssl/md5.h>
int get_md5(char *input,char *output)
{
char password[1024*1024*5]={0};
MD5_CTX x;
int i = 0, len;
char *out = NULL;
unsigned char d[16];
unsigned char tmp[128] = { 0 };
strcpy(password,input);
MD5_Init(&x);
MD5_Update(&x, (char *)password, strlen(password));
MD5_Final(d, &x);
out = (char *)malloc(35);
memset(out, 0x00, 35);
strcpy(out, "$1$");
// printf("MD5("%s") = ", password);
for (i = 0; i < 16; i++)
{
sprintf(out + (i*2), "%02X", d[i]); // 转换为32位
}
out[32] = 0;
// printf("%sn", out);
strcpy(output,out);
free(out);
return 0;
}
另外提供两段代码供参考:
方法一:
#include<stdio.h>
#include<openssl/md5.h>
#include<string.h>
int main( int argc, char **argv )
{
MD5_CTX ctx;
unsigned char *data="123";
unsigned char md[16];
char buf[33]={'