2015-07-13 79 views

回答

2

不,Boost没有实现MD5。为此使用加密/散列库。

CryptoC++在我的经验很好。

的OpenSSL实现所有流行的消化,这是一个使用OpenSSL的样本:

Live On Coliru

#include <openssl/md5.h> 
#include <iostream> 
#include <iomanip> 

// Print the MD5 sum as hex-digits. 
void print_md5_sum(unsigned char* md) { 
    for(unsigned i=0; i <MD5_DIGEST_LENGTH; i++) { 
     std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(md[i]); 
    } 
} 

#include <string> 
#include <vector> 
#include <fstream> 

int main(int argc, char *argv[]) { 
    using namespace std; 
    vector<string> const args(argv+1, argv+argc); 

    for (auto& fname : args) { 

     MD5_CTX ctx; 
     MD5_Init(&ctx); 

     ifstream ifs(fname, std::ios::binary); 

     char file_buffer[4096]; 
     while (ifs.read(file_buffer, sizeof(file_buffer)) || ifs.gcount()) { 
      MD5_Update(&ctx, file_buffer, ifs.gcount()); 
     } 
     unsigned char digest[MD5_DIGEST_LENGTH] = {}; 
     MD5_Final(digest, &ctx); 

     print_md5_sum(digest); 
     std::cout << "\t" << fname << "\n"; 
    } 
} 
+0

这仅是Linux,这就是问题对我来说。 – Croll

+1

@joker crypto C++和OpenSsl都可以在windows上使用(也许大多数平台是你可以梦想的) – sehe

+0

你的代码(以及其他任何示例)使用linux头文件,如果是这样,你能显示windows例子吗?将是美妙的 – Croll