文件和字符串的md5算法
头文件
#include "openssl/md5.h" #include <iomanip>
字符串的md5算法:
std::string MD5(std::string &data) { MD5_CTX ctx; std::ostringstream oss; unsigned char output[32]; MD5_Init(&ctx); MD5_Update(&ctx, data.c_str(), data.length()); MD5_Final(output, &ctx); for (int i = 0; i < 16; i++) { oss << std::hex << std::setw(2) << std::setfill(0) << (unsigned int)output[i]; } return oss.str(); }
文件的md5算法
std::string MD5(std::string path) { MD5_CTX ctx; std::ifstream reader; std::ostringstream oss; char buf[4096]; unsigned char output[32]; reader.open(path.c_str(), std::ios::binary); if (!reader.is_open()) return std::string(); MD5_Init(&ctx); while (!reader.eof()) { reader.read(buf, sizeof(buf)); MD5_Update(&ctx, buf, reader.gcount()); } MD5_Final(output, &ctx); reader.close(); for (int i = 0; i < 16; i++) { oss << std::hex << std::setw(2) << std::setfill(0) << (unsigned int)output[i]; } return oss.str(); }