您的位置:首页 > 运维架构

再次用openssl求SHA1

2017-09-18 21:26 375 查看
        最近, 我没有找到现成的求SHA1的函数, 我需要一行代码调用, 但没有, 那自己来写个吧:

#include <iostream>
#include <algorithm>
#include "openssl/sha.h" // 要有对应的头文件哈, 否则编译不过
using namespace std;

unsigned char char2HexChar(const unsigned char &x)
{
return x > 9 ? (x - 10 + 'A') : x + '0';
}

string getSha1(const string &str)
{
SHA_CTX c;
SHA1_Init(&c);
SHA1_Update(&c, str.c_str(), str.size());
unsigned char szSha1[SHA_DIGEST_LENGTH] = {0};
SHA1_Final(szSha1, &c);

string strSha1;
unsigned char strTmpHex;
for(int i = 0; i < SHA_DIGEST_LENGTH; ++i)
{
strTmpHex = char2HexChar(szSha1[i] / 16);
strSha1.append(1, strTmpHex);
strTmpHex = char2HexChar(szSha1[i] % 16);
strSha1.append(1, strTmpHex);
}

std::transform(strSha1.begin(), strSha1.end(), strSha1.begin(), ::tolower);
return strSha1;
}

int main()
{
cout <<getSha1("123") << endl; // 40bd001563085fc35165329ea1ff5c5ecbdbbeef
return 0;
}
       不多说。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: