【发布时间】:2016-11-29 14:38:02
【问题描述】:
我如何/应该如何从unsigned char 数组转换为widechar 数组wchar_t 或std::wstring?以及如何将其转换回unsigned char 数组?
或者 OpenSSL 是否可以从 SHA256_Update 生成宽字符哈希?
【问题讨论】:
-
你最后的陈述几乎显示了你实际上想要做什么。显然你正在尝试散列一些东西。您正在尝试散列宽字符数据吗?您是否尝试将从哈希 API 返回的八位字节转换为宽十六进制字符(
0x010AA02BB等...)?在 either 的情况下,我希望您至少了解哈希摘要的结果是不可读的 asci(或 unicode )hex-char 数据,直到 you 做到这一点通过一些转换。它只是一个字节序列。 -
@WhozCraig 是的,我正在尝试对
std::wstring进行哈希处理,然后我想将其发布到我的服务器(因此转换回std::wstring进行发布。哈希是我与之通信的身份验证令牌服务器。 -
所以您正在散列
std::wstring(假设您不散列终止 wchar),然后将生成的散列转换为 char 0 的std::wstring。 .9,a..f(十六进制字符)发布,然后接收者将其转换回八位字节以验证哈希?这是否描述了您的工作流程?如果是这样,其中一个(第一个)可能是可以避免的,具体取决于如何生成服务器保留用于比较的哈希值,例如,如果它是使用宽数据完成的。而且我假设您已经有一个例程将原始八位字节转换为十六进制字符的std::wstring。 -
您是否考虑过使用 MultiByteToWideChar 和 WideCharToMultiByte 函数? (它是 Win API,但也许,你正在为 Windows 平台编写)
-
@WhozCraig 是的,这正是我的工作流程。服务器脚本是 PHP,因此它将与 ascii 一起使用