【发布时间】:2018-09-03 09:50:37
【问题描述】:
我有一个套接字服务器、编写的 C++ 和一个用 PHP 编写的 API 客户端,用于为特殊位置注册新用户。 为了验证来自 PHP 客户端的请求,我将使用带有唯一密钥的 HAMC 哈希,只有 API 客户端和套接字服务器知道。
PHP 客户端通过 HTTP POST 将内容作为 JSON 发送,然后 Socket 服务器读取并处理此内容。 效果很好。
现在,我的问题。 我有三个要散列的字段: 消息(字符串) objectIDs(整数数组) 类型(字符串)
如何为这三个字段创建一个哈希? 当我使用 JSON 时,JSON 的字符串是否可能在 PHP 和 C++(https://github.com/nlohmann/json) 或更多选项卡、空格或其他任何东西中没有相同的排序?
作为一点信息,消息可以包含任何字符。
目前我用这个
$str = "type=".$type. ";message=".$message;
foreach ($objectIDs as $index => $objectID) {
$str .= ";objectID[" . $index . "]=" . $objectID;
}
//generate from a String a SHA256 hash with HMAC
$hash = getSignature($str);
有人告诉我这个签名不是唯一的,应该有一个特殊的消息表明系统创建了一个错误的哈希。 (但目前他无法联系到) 在我的测试中,我无法重现它。 现在我希望其他人可以帮助我。
【问题讨论】: