概述:计算 sha1 C++ 版
0x01 说明
鉴于个人使用的目的,在 Github 上找了些许开源 sha1 计算的项目,最后使用 vog/sha1 这个项目计算出来相关结果,使用比较简单,fork了一个 vs 版本记录一下。
仓库地址:[holdyounger/SHA1: sha1 implementation in C++, fork by vog/sha1](https://github.com/holdyounger/SHA1)
0x02 使用
如下所示,使用比较简单
- 计算文本 sha1
void test_other()
{
SHA1 checksum;
cout << endl;
cout << "Test: No string" << endl;
compare(checksum.final(), "da39a3ee5e6b4b0d3255bfef95601890afd80709");
cout << endl;
checksum.update("");
cout << "Test: Empty string" << endl;
compare(checksum.final(), "da39a3ee5e6b4b0d3255bfef95601890afd80709");
cout << endl;
cout << "Test: abcde" << endl;
checksum.update("abcde");
compare(checksum.final(), "03de6c570bfe24bfc328ccd7ca46b76eadaf4334");
cout << endl;
cout << "Test: Two concurrent checksum calculations" << endl;
SHA1 checksum1, checksum2;
checksum1.update("abc");
compare(checksum2.final(), "da39a3ee5e6b4b0d3255bfef95601890afd80709"); /* "" */
compare(checksum1.final(), "a9993e364706816aba3e25717850c26c9cd0d89d"); /* "abc" */
cout << endl;
cout << "Test: a [00] b [7F] c [80] d [FF] e [C3] [F0] f" << endl;
checksum.update(std::string("a" "\x00" "b" "\x7f" "c" "\x80" "d" "\xff" "e" "\xc3\xf0" "f", 12));
compare(checksum.final(), "cd0dd10814c0d4f9c6a2a0a4be2304d2371468d3");
}- 计算文件
void test_file(const string &filename)
{
cout << SHA1::from_file(filename) << " *" << filename << endl;
}0x03 结果校验
以下是计算结果,与 Hash.exe 计算结果一直。
