C/C++计算MD5值 - Boost MD5


Boost MD5

Boost实现了一个md5的哈希校验算法,用于对文件指纹进行校对,只需要包含头文件即可使用。 boost/uuid/detail/md5.hpp


实例

#include <stdio.h>
#include <string.h>
#include "boost/uuid/detail/md5.hpp"
#include <boost/algorithm/hex.hpp>

int main ()
{
          
   
    boost::uuids::detail::md5 md5;
    boost::uuids::detail::md5::digest_type digest;

    int len;
    char result[33] = {
          
   0};
    unsigned char buffer[1024];

    FILE* file = fopen("/opt/test.tar.gz","rb");
    if(file == NULL)
        return -1;

    while ((len = static_cast<int>(fread(buffer, 1, 1024, file))) != 0)
    {
          
   
        md5.process_bytes(buffer,len);
    }
    fclose(file);

    md5.get_digest(digest);

    const auto charDigest = reinterpret_cast<const char *>(&digest);
    boost::algorithm::hex(charDigest, charDigest + sizeof(boost::uuids::detail::md5::digest_type), result);
    
    printf("%s
",result);
    
    return 0;
}

总结

Boost功能丰富,但又过于庞大,如果项目中未使用到boost,不建议引入该方式。

经验分享 程序员 微信小程序 职场和发展