c++ - 如何使用boost计算文件的md5?

标签 c++ boost md5

我需要计算一个文件的 md5,但由于某种原因我不想将我的项目与 OpenSSL 库链接起来。
对我来说,最好的解决方案之一是通过 boost 库制作它。
我找到了下一个示例:

#include <boost/md5.hpp>
#include <iostream>
#include <fstream>

std::cout << boost::md5("message").hex_str_value();

boost::md5(std::ifstream("file.txt")).hex_str_value();

但不幸的是没有boost/md5.hpp当前 boost 版本 (1.68.0/1.69.0) 中的头文件。

有人能告诉我如何使用当前的 boost 版本 1.69.0 实现下面的示例吗?

我希望这篇文章能帮助所有像我一样搜索它的人。

最佳答案

boost 有这样的功能:

#include <iostream>
#include <algorithm>
#include <iterator>
#include <boost/uuid/detail/md5.hpp>
#include <boost/algorithm/hex.hpp>

using boost::uuids::detail::md5;

std::string toString(const md5::digest_type &digest)
{
    const auto charDigest = reinterpret_cast<const char *>(&digest);
    std::string result;
    boost::algorithm::hex(charDigest, charDigest + sizeof(md5::digest_type), std::back_inserter(result));
    return result;
}

int main ()
{
    std::string s;

    while(std::getline(std::cin, s)) {
        md5 hash;
        md5::digest_type digest;

        hash.process_bytes(s.data(), s.size());
        hash.get_digest(digest);

        std::cout << "md5(" << s << ") = " << toString(digest) << '\n';
    }

    return 0;
}

Live Example

关于c++ - 如何使用boost计算文件的md5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070320/

相关文章:

c++ - Qt 和 Boost 套接字库之间的兼容性

c++ - C 与 Python - 条件语句中的运算符优先级

c++ - 使用 boost::iterator_adapter 实现自定义迭代器时,我可以对可变迭代器和常量迭代器使用相同的类吗?

c++ - 使用挂起的协程进行适当的清理

c++ - 为什么从 DLL 调用时 boost::wave::context 构造函数会死锁?

JAVA Md5 返回非确定性结果

c++ - 谷歌测试夹具 : passing a class member size

c++ - 调用 glTexSubImage2D 时出现 OpenGL 错误 'invalid value'

java - 如何解密mysql数据库中的MD5密码并将其检索到Java中的jTextfield

java - 如何从 JAVA 中的日期获取 md5 总和,例如在 oracle 中?