C++基于boost实现 获取文件或者字符串md5

本文介绍如何使用C++结合Boost库来实现文件或字符串的MD5值计算。通过具体的代码示例,展示了从读取文件到计算MD5的过程,并提供了完整的实现方案。

C++基于boost实现 获取文件或者字符串md5

  • c++11
  • boost 1.66版本以上
#include <iostream>
#include <fstream>
#include <boost/algorithm/hex.hpp>
#include <boost/uuid/detail/md5.hpp>

bool getMd5(std::string& str_md5, const char* const buffer, size_t buffer_size)
{
    if (buffer == nullptr)
    {
        return false;
    }
    boost::uuids::detail::md5 boost_md5;
    boost_md5.process_bytes(buffer, buffer_size);
    boost::uuids::detail::md5::digest_type digest;
    boost_md5.get_digest(digest);
    const auto char_digest = reinterpret_cast<const char*>(&digest);
    str_md5.clear();
    boost::algorithm::hex(char_digest, char_digest + sizeof(boost::uuids::detail::md5::digest_type), std::back_inserter(str_md5));
    return true;
}

std::string getMd5(const std::string &filename)
{
    std::string str_md5;
    std::ifstream is(filename, std::ifstream::binary);
    if (is) {
        // get length of file:
        is.seekg(0, is.end);
        int length = is.tellg();
        is.seekg(0, is.beg);

        // allocate memory:
        char* buffer = new char[length];
        // read data as a block:
        is.read(buffer, length);
        is.close();

        getMd5(str_md5, buffer, length);
        delete[] buffer;
    }
    return str_md5;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘色的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值