C++:如何将带有 md5 哈希的 wstring 转换为 byte* 数组?

标签 c++ hash wstring

std::wstring hashStr(L"4727b105cf792b2d8ad20424ed83658c");

//....

byte digest[16];

如何在摘要中获取我的 md5 哈希值? 我的答案是:

wchar_t * EndPtr;

for (int i = 0; i < 16; i++) {
std::wstring bt = hashStr.substr(i*2, 2);
digest[i] = static_cast<BYTE>(wcstoul(bt.c_str(), &EndPtr, 16));
}

最佳答案

您需要从 hashStr 中读取两个字符,将它们从十六进制值转换为二进制值,并将该值放入 digest 中的下一个位置——这上面的东西顺序:

for (int i=0; i<16; i++) {
    std::wstring byte = hashStr.substr(i*2, 2);
    digest[i] = hextobin(byte);
}

关于C++:如何将带有 md5 哈希的 wstring 转换为 byte* 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365627/

相关文章:

c++ - 多线程程序导致段错误,使用 std::list::push_back

c++ - 安卓 NDK + LibEvents

c++ - 使用在模板化类型名中定义的 typedef

wstring - ChaiScript 中的 std::wstring

c++ - 将double转换为wstring,但wstring必须用科学计数法格式化

c++ - 根据对值对多维映射进行排序

java - 非空字符串的哈希码可以为零吗?

c++ - Botan C++哈希函数generate_bcrypt()

security - 哈希加盐和随机数有什么区别?

C++ Win32 通过 to_wstring 将零填充到 int