openssl md5

linux下调用openssl函数进行md5

可以在freebsd/macos/linux下编译运行。
gcc -o test test.c -lcrypto
----test.c---
#include <openssl/md5.h>
#include <stdio.h>
int main{
        //MD5_CTX md5;
        //MD5_Init(&md5);
        //unsigned char md[1024] = {0};
        //MD5_Update(&md5,mac,strlen(mac));
        //MD5_Final(md,&md5);
        char mac[100] = {0};
        strcpy(mac,"12345678"); 
        char *md;
        int l = strlen(mac);
        md = (char *)MD5((const unsigned char *)mac,l,NULL);
        int len = strlen((char *)md);
        char strmd5[1024] = {0};
        for(int i=0; i<len; i++){
                sprintf(strmd5+strlen(strmd5),"%02X",md[i]&0xFF);
        }
        //printf("%s/n",strmd5);
}


openssl应用之MD5加密

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>

#include "openssl/md5.h"

#include "cc_bel.h"
#include "cc_MD5.h"

#define APPLICATION_NAME "cc_MD5"
#define APPLICATION_VERSION "0.99"

uchar *ebel_openssl_md5(uchar *pszMd5Src, int iSrcLen, uchar*pszMd5HexDest);
RESULT ebel_makeMD5File(char *pszSource_file, uchar*pszMd5HexDest);

RESULT main(int argc, char *argv[])
{
 
    printf("Copyright BANKHT %s %s\n\n", APPLICATION_NAME,APPLICATION_VERSION);
     
     
     
      charszSource[32];
      charszObject[32];
      charszDesc[64];
      charszflag[4];
     
      if(argc !=3)
      {
              printf("\nUsage: %s <flag><Source>\n", APPLICATION_NAME);
              printf("flag              -- 标识,为1时为字符串进行摘要,为2时为文件进行摘要\n");
              printf("Source file -- 源字符串\n");
              return FAIL;
      }
     
      bel_ClrBuf(szSource);
      bel_ClrBuf(szflag);
      bel_ClrBuf(szDesc);
     
      strcpy(szflag, argv[1]);
      strcpy(szSource, argv[2]);
      if(strcmp(szflag, "1") == 0)
      {
              printf("\n您选择的方式是[flag=%s],为字符串进行摘要\n\n",szflag);
              ebel_openssl_md5(szSource, strlen(szSource), szDesc);
              printf("Source char = [ %s ]\n", szSource);
              printf("length of MD5 = [ %d ]\n", strlen(szDesc));
              printf("szDesc = [ %s ]\n", szDesc);
      }
      else
       
             
              printf("\n您选择的方式是[flag=%s],为文件进行摘要\n",szflag);
              ASSERT_SUCCESS(ebel_makeMD5File(szSource, szDesc));
              printf("Source char = [ %s ]\n", szSource);
              printf("length of MD5 = [ %d ]\n", strlen(szDesc));
              printf("szDesc = [ %s ]\n", szDesc);
      }
     
      returnSUCCESS;
}

uchar *ebel_openssl_md5(uchar *pszMd5Src, int iSrcLen, uchar*pszMd5HexDest)
{
     
     
      unsignedchar szMd5Dest[MD5_DIGEST_LENGTH+1];
     
      memset(szMd5Dest, 0, sizeof(szMd5Dest));
     
      MD5(pszMd5Src, iSrcLen, szMd5Dest);
      bel_StrBuf2Hex(szMd5Dest, MD5_DIGEST_LENGTH, pszMd5HexDest);
     
      returnpszMd5HexDest;
}

RESULT ebel_makeMD5File(char *pszSource_file, uchar*pszMd5HexDest)
{
      FILE*pfPlain;
      unsignedchar szMd5Dest[MD5_DIGEST_LENGTH+1];
      longlFileSize;
      char*szmol;
      bel_ClrBuf(szmol);
     
      if((pfPlain= fopen(pszSource_file, "rb")) == NULL)
       
              printf ("==============\nopen file [ %s ]error!\n==============\n", pszSource_file);
              return FAIL;
      }
     
     
      fseek(pfPlain, 0, SEEK_END);
      lFileSize =ftell(pfPlain);
     
     
      szmol =(char*)malloc(lFileSize);
     
     
      fseek(pfPlain, 0, SEEK_SET);
      fread(szmol,lFileSize, 1, pfPlain);
     
      MD5(szmol,lFileSize, szMd5Dest);
      bel_StrBuf2Hex(szMd5Dest, MD5_DIGEST_LENGTH, pszMd5HexDest);
     
      free(szmol);
      fclose(pfPlain);
      returnSUCCESS;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值