【发布时间】:2015-09-03 16:34:41
【问题描述】:
我想为某个字符串打印 MD5。为此我已经完成了功能
std::string generateHashMD5(std::string text)
{
unsigned char * resultHash;
resultHash = MD5((const unsigned char*)text.c_str(), text.size(), NULL);
std::string result;
result += (char *) resultHash;
return result;
}
我想打印这个函数的结果。我尝试对此类功能进行版本化。
void printHash(std::string hash)
{
for (unsigned i = 0; i < str.size(); i++)
{
int val = (short) hash[i];
std::cout<<std::hex<<val<<':';
}
std::cout<<std::endl;
}
std::string printHash(std::string hash)
{
char arrayResult[200];
for(int i = 0; i < 16; i++)
sprintf(&arrayResult[i*2], "%02x", (unsigned short int)hash[i]);
std::string result;
result += arrayResult;
return result;
}
问题是不幸的是,没有一个不显示正确的结果。这个函数应该改什么或者哪里出错了?
【问题讨论】:
-
任何时候你发现自己在使用 C++ 进行转换,你很可能会犯严重的错误。这没有什么不同。
MD5()是什么?它记录在哪里?它返回什么? -
想向我们展示输出吗?
-
MD5的结果可能已经是一个十六进制字符串,你不需要将它转换为十六进制。只需按原样打印即可。 -
它可能是一个 128 位的哈希值。但没有迹象表明谁拥有返回的内存。 OP 需要澄清这一点。