项目总是各种新需求,最近遇到需要对字符串进行md5加密,确保传输字符串的有效性。
考虑到跨平台性和通用性,选择了cryptopp开源库,这里主要是用静态库调用。
1、引入头文件和lib库
#include "cryptopp/md5.h" #pragma comment(lib,"cryptlib.lib") using namespace CryptoPP; /*md5字符串的长度,16代表32位字符 */ #define MD5_CRYPT_LEN 16
2、使用
string getMD5(string str) { MD5 md5; byte digest[MD5_CRYPT_LEN] = { 0 }; int len = str.length(); byte *message = new byte[len + 1]; message[len] = 0; memcpy(message, str.c_str(), len + 1); md5.CalculateDigest(digest, message, len); ostringstream osstr; /* 设置字符串流的格式:16进制,大写、不足位补0*/ osstr << hex << uppercase << setfill('0'); for (int i = 0; i < MD5_CRYPT_LEN; ++i) { /* 输入2位数据,输入F最终输出是0F*/ osstr << setw(2) << int(digest[i]); } delete []message; return osstr.str(); }
主要是记录下md5加密的使用和ostringstream的使用,加深自己的印象。