使用sha256 一般会导入sha.h hex.h以及files.h这几个头文件
常见的sha256使用示例
1、DigestSize 和 BlockSize()
#include "cryptlib.h"
#include "sha.h"
#include <iostream>
int main (int argc, char* argv[])
{
using namespace CryptoPP;
SHA256 hash;
std::cout << "Name: " << hash.AlgorithmName() << std::endl;
std::cout << "Digest size: " << hash.DigestSize() << std::endl;
std::cout << "Block size: " << hash.BlockSize() << std::endl;
return 0;
}
结果
$ ./test.exe
Name: SHA-256
Digest size: 32
Block size: 64
2、Update()添加数据, Final()更新结果
using namespace CryptoPP;
HexEncoder encoder(new FileSink(std::cout));
std::string msg = "Yoda said, Do or do not. There is no try.";
std::string digest;
SHA256 hash;
hash.Update((const byte*)msg.data(), msg.size());
digest.resize(hash.DigestSize());
hash.Final((byte*)&digest[0]);
std::cout << "Message: " << msg << std::endl;
std::cout << "Digest: ";
StringSource(digest, true, new Redirector(encoder));
std::cout << std::endl;
运行结果
$ ./test.exe
Message: Yoda said, Do or do not. There is no try.
Digest: F00E3F70A268FBA990296B32FF2B6CE7A0757F31EC3059B13D3DB1E60D9E885C
3、 截断hash结果
std::cout << "Message: " << msg << std::endl;
hash.Update((const byte*)msg.data(), msg.size());
digest.resize(hash.DigestSize()/2);
hash.TruncatedFinal((byte*)&digest[0], digest.size());
std::cout << "Digest: