程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Linux下c基於openssl生成MD5的函數,opensslmd5

Linux下c基於openssl生成MD5的函數,opensslmd5

編輯:C++入門知識

Linux下c基於openssl生成MD5的函數,opensslmd5


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的函數

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved