как рассчитать md5 файла с помощью boost? - PullRequest
1 голос
/ 08 марта 2019

Мне нужно рассчитать md5 файла, но я не хочу связывать свой проект с библиотекой OpenSSL по какой-то причине.Для меня одно из лучших решений - сделать это через библиотеку наддува.Я нашел следующий пример:

#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 (1.68.0 / 1.69.0) нет заголовка boost/md5.hpp.

Может кто-нибудь сказать мне, как реализоватьПример ниже, используя текущую версию Boost 1.69.0?

Я надеюсь, что этот пост поможет всем, кто будет искать его как меня.

1 Ответ

2 голосов
/ 08 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...