1 使用Crypto++计算文件的md5值
使用Crypto++计算文件的md的md5值,需要使用到Crypto++以下类:
- FileSource: 用于从文件中读取数据
- HashFilter: 表示一个用于计算哈希的过滤器。它接受一个哈希函数作为参数,这里是
md5
- md5: 用于计算输入数据的 MD5 哈希值
- HexEncoder: 用于将二进制数据编码为十六进制表示
- StringSink(dst 或 digest): 用于将数据写入字符串。在这里,它将最终的哈希值以十六进制字符串的形式写入到
dst
或digest
中
示例代码如下
#include <iostream>
#include "md5.h"
#include "files.h"
#include "hex.h"
#if defined(WIN32) || defined(_WIN32) || defined(_WIN32_) || defined(WIN64) || defined(_WIN64) || defined(_WIN64_)
#include <Windows.h>
#endif
int main()
{
CryptoPP::Weak1::MD5 md5;
std::string file_path = "example.mp4";
std
CryptoPP::FileSource(
file_path.c_str(), true,
new CryptoPP::HashFilter(
md5,
new CryptoPP::HexEncoder(new CryptoPP::ArraySink(buf, size)))
);
std::string file_hash = std::string(reinterpret_cast<const char*>(buf), size);
std::cout << "file md5: " << file_hash << std::endl;
return 0;
}
或者使用以下更加简洁的代码
#include <iostream>
#include "md5.h"
#include "files.h"
#include "hex.h"
int main()
{
std::string file_path = "C:\\Users\\HuangWang\\Desktop\\7-00001-Aa.mp4";
CryptoPP::Weak1::MD5 md5;
std::string file_hash = "";
CryptoPP::FileSource(
file_path.c_str(), true,
new CryptoPP::HashFilter(
md5,
new CryptoPP::HexEncoder(new CryptoPP::StringSink(file_hash)))
);
std::cout << "file md5: " << file_hash << std::endl;
return 0;
}
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 使用Crypto++计算文件md5值
原文链接:https://www.stubbornhuang.com/2943/
发布于:2024年01月08日 11:32:08
修改于:2024年01月08日 11:32:08
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52