このページにある md5 実装を使用しています。
http://www.zedwood.com/article/121/cpp-md5-function
そのままではうまくいきます。ただし、次の機能があります。
// return hex representation of digest as string
std::string MD5::hexdigest() const
{
if (!finalized)
return "";
char buf[33];
for (int i=0; i<16; i++)
sprintf(buf+i*2, "%02x", digest[i]);
buf[32]=0;
return std::string(buf);
}
sprintf を安全なバージョン (sprintf_s) に変更すると、実行時にアクセス違反エラーが発生します。私が変更する唯一のものは、次のような sprintf 行です。
sprintf_s(buf+i*2, 33, "%02x", digest[i]);
正常にコンパイルされますが、エラーが発生します。理由はありますか?