最近, 我没有找到现成的求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;
}
不多说。