项目总是各种新需求,最近遇到需要对字符串进行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] = { }; int len = str.length();
byte *message = new byte[len + ];
message[len] = ;
memcpy(message, str.c_str(), len + ); md5.CalculateDigest(digest, message, len); ostringstream osstr;
/* 设置字符串流的格式:16进制,大写、不足位补0*/
osstr << hex << uppercase << setfill(''); for (int i = ; i < MD5_CRYPT_LEN; ++i)
{
/* 输入2位数据,输入F最终输出是0F*/
osstr << setw() << int(digest[i]);
} delete []message; return osstr.str();
}
主要是记录下md5加密的使用和ostringstream的使用,加深自己的印象。