opensslmd5算法源码c++版

#include "stdafx.h"  
#include <iostream>  
#include <string>  
#include <vector>  
#include <cstdio>  
#include <iomanip>  
#include <stdlib.h>  
#include <openssl/md5.h>  

#include "cryptotest.h"  

using namespace std; // C++STL库

string MD5_Digest(const string cleartext)  
{  
    string strDigest;  // 密文
    unsigned char tmp[16] = {0};  //声明tmp[]


    MD5((const unsigned char*)cleartext.c_str(), cleartext.length(), tmp); 
//补位填充
//cleartext.c_str():c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同

    MD5_CTX c;  //MD5_CTX结构体指针
    MD5_Init(&c);  //初始化MD5_CTX
    MD5_Update(&c, cleartext.c_str(), cleartext.length());  //进行hash
    MD5_Final(tmp, &c);  //tmp是当前加密结果,放置结果


    char* tmp1 = new char[32 + 1];  //声明tmp1[]
    memset(tmp1, 0, 32 + 1);  

    for(int i = 0; i < 16; i++)   
        sprintf(&(tmp1[i*2]), "%02x", tmp[i]);  


    strDigest = (char*)tmp1;  //密文就是tmp1

    delete [] tmp1;  

    return strDigest;  //返回32位密文
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值