首页 > 代码库 > Linux下c基于openssl生成MD5的函数
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=http://www.mamicode.com/ "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 =http://www.mamicode.com/ "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的函数
Linux下c基于openssl生成MD5的函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。