#include <iostream>
#include <algorithm>
#include <iterator>
#include <boost/uuid/detail/md5.hpp>
#include <boost/algorithm/hex.hpp>
std::string md5(const std::string& s)
{
boost::uuids::detail::md5 hash;
boost::uuids::detail::md5::digest_type digest;
hash.process_bytes(s.data(), s.size());
hash.get_digest(digest);
const auto charDigest = reinterpret_cast<const char*>(&digest);
std::string md5val;
// 此方法与shell md5sum命令得到的不一样
boost::algorithm::hex(charDigest,
charDigest + sizeof(boost::uuids::detail::md5::digest_type),
std::back_inserter(md5val));
// 此方法与shell md5sum命令得到的值一样
// 使用常用字符串的方式进行格式化
md5val.resize(32 + 1);
int len = std::sprintf(md5val.data(), "%08x%08x%08x%08x", digest[0], digest[1], digest[2], digest[3]);
md5val.resize(len);
return md5val;
}
int main()
{
std::string s;
while (std::getline(std::cin, s)) {
std::cout << "md5(" << s << ") = " << md5(s) << '\n';
}
return 0;
}
boost生成md5值
于 2024-09-19 19:41:13 首次发布