前言说明
sha1库是一种哈希算法,用以生成结果为160bit的数据摘要,即20个字节。sha256结果为256bit,即32个字节。
摘要的意思是,抽象为任意大小的数据为固定长度数据,结果是由于全部原始数据经过计算得出,逆推则无法计算除准确结果。
摘要的特性:单向性 映射收敛性 不可篡改性 标准可验证性
由于以上特性,sha哈希被广泛用于软件工程中。例如git软件版本管理工具,就是使用sha1算法计算文件和切片的指纹值。Bitcoin,使用sha256作为数据验证依据。
代码
包含头文件#include "openssl/sha.h"
void SHA256String(const std::string &strInput, std::string &strOutput)
{
unsigned char szSHA256[32];
SHA256((const unsigned char *)strInput.c_str(), strInput.length(), szSHA256);
for (int i = 0; i < 32; i++)
{
char szBuf[32] = { 0 };
sprintf(szBuf, "%02x", szSHA256[i]);
strOutput += szBuf;
}
}