SHA256用法示例 以及使用SHA256进行视频文件校验

本文详细介绍了使用SHA256进行文件校验,包括常见使用示例,如DigestSize、BlockSize、Update与Final操作,以及管道方式验证。特别地,文章阐述了如何对大视频文件进行分块校验,确保文件完整性和安全性,同时提供实验过程和编码实现,以确保每个块的并行认证和播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值