最近我试图使用此代码从字符串生成 MD5。
string SecureInfrastructure::Generate_MD5_FromString(const string &data)
{
unsigned char result[MD5_DIGEST_LENGTH];
MD5((unsigned char*)data.c_str(), data.size(), result);
std::ostringstream sout;
sout<<std::hex<<std::setfill('0');
for(long long c: result)
{
sout<<std::setw(2)<<(long long)c;
}
return sout.str();
}
但是,我使用的编译器不支持基于范围的 for 循环,我尝试for(...;...;...)
使用下面提供的代码将此代码转换为传统循环。
string SecureInfrastructure::Generate_MD5_FromString(const string &data)
{
unsigned char result[MD5_DIGEST_LENGTH];
MD5((unsigned char*)data.c_str(), data.size(), result);
std::ostringstream sout;
sout<<std::hex<<std::setfill('0');
for(long long c; c<sizeof(result); c++) // long long c: result
{
sout<<std::setw(2)<<(long long)c;
}
return sout.str();
}
什么时候,我测试它不起作用,因为我得到一个空字符串。我很难找到错误所在。我应该如何用传统的 for 循环重新实现第一个代码?