开放 SSL 中 -hmac 标志的解释

开放 SSL 中 -hmac 标志的解释

我在 binance 上遇到了以下命令,并尝试对其进行解压。请参见此处:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

(部分:POST /api/v1/order 的 SIGNED 端点示例)

openssl dgst -sha256 -hmac

我的理解是,它是对 openssl 命令的调用,用于生成摘要,摘要将属于标准规范所同意的 sha256 类型。我不明白的是标​​志-hmac。它是什么,它在数学层面上起什么作用?

我解决问题的尝试:

openssl -hmac我使用和进行了谷歌搜索,openssl dgst -hmac但前 10 个结果对我毫无用处。所以我认为最好向更有经验的用户询问。

更新:

这些文档中没有提到该标志:https://www.mkssoftware.com/docs/man1/openssl_dgst.1.asp所以我开始相信它可能没有加密用途。虽然我现在还不确定。

我发现了与本问题中提到的标志类似的东西:https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

答案1

HMAC 也称为密钥哈希。因此,只有在签名生成时使用相同的密钥,才能在验证过程中生成相同的哈希。MAC 的结果称为认证标签

HMAC 是一种特殊的构造,它使用两次哈希调用(在您的情况下是 SHA-256),该哈希在内部使用,并且不使用任何其他密码原语。因此,它可以被看作是一个特定的模式哈希本身。因此包含在数据表

您的代码中缺少密钥数据,这当然是创建密钥哈希所必需的。这应该在之后显示-hmac。不幸的是,openssl需要密钥的二进制格式。有关更多信息,请参阅OpenSSL 邮件列表中的这个旧对话

编辑#1:深入挖掘一下,如果您想将密钥指定为十六进制,则可以使用如下行:

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

该函数的输出是第二次运行哈希的结果,因此如果仅查看哈希/HMAC 结果的大小,则无法将其与 SHA-256 区分开来。当然,其内容与仅对数据进行哈希处理(或将密钥和数据连接起来)完全不同。


编辑 #2:但是,您没有指定密钥,因此实际上会跳过 HMAC 并使用 SHA-256。这已被标记为错误,请参阅这里

答案2

如果您使用的是 iOS(或 Mac OS...),我厌倦了乱搞,这是我写的评论..

https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en

相关内容