Linux下c基於openssl產生MD5的函數

來源:互聯網
上載者:User

標籤:

Linux下openssl提供了一系列雜湊及加密的函數,如果調用openssl提供的MD5函數產生任一字元串的MD5呢?下面提供了一段代碼實現Linux下c字串產生md5的函數。

具體代碼:

 

123456789101112131415161718192021222324252627282930 #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搜集整理

另外提供兩段代碼供參考:

方法一:

123456789101112131415161718192021 #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

 

方法二:

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

Linux下c基於openssl產生MD5的函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.