Linux下c基于openssl生成MD5的函数

Linux下openssl提供了一系列哈希及加密的函数,如果调用openssl提供的MD5函数生成任意字符串的MD5呢?下面提供了一段代码实现Linux下c字符串生成md5的函数。

具体代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#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("%s\n", out);
      strcpy  (output,out);
      free  (out);
      return   0;
}


本文由www.169it.com搜集整理

另外提供两段代码供参考:

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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]={  '\0'  };
char   tmp[3]={  '\0'  };
int   i;
MD5_Init(&ctx);
MD5_Update(&ctx,data,  strlen  (data));
MD5_Final(md,&ctx);
for  ( i=0; i<16; i++ ){
sprintf  (tmp,  "%02X"  ,md[i]);
strcat  (buf,tmp);
}
printf  (  "%s\n"  ,buf);
return   0;
}


输出:

202CB962AC59075B964B07152D234B70


方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<openssl/md5.h>
#include<string.h>
int   main(   int   argc,   char   **argv )
{
unsigned   char   *data =   "123"  ;
unsigned   char   md[16];
int   i;
char   tmp[3]={  '\0'  },buf[33]={  '\0'  };
MD5(data,  strlen  (data),md);
for   (i = 0; i < 16; i++){
sprintf  (tmp,  "%2.2x"  ,md[i]);
strcat  (buf,tmp);
}
printf  (  "%s\n"  ,buf);
return   0;
}

输出:

202cb962ac59075b964b07152d234b70

文章来源:Linux下c基于openssl生成MD5的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值