我在 binance 上遇到了以下用于 unix 的命令,我试图解压缩该命令。见这里:https : //github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md
(部分:POST /api/v1/order 的签名端点示例)
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
HMAC 也称为键控哈希。因此,如果您在签名生成期间使用相同的密钥,则只能在验证期间生成相同的哈希。MAC 的结果称为身份验证标记。
HMAC 是一种特殊构造,它使用两次对哈希的调用 - 在您的情况下为 SHA-256 - 在内部使用,它不使用任何其他加密原语。因此,它可以被视为散列本身的一种特定模式。因此包含在dgst 中。
您的代码中缺少关键数据,这当然是创建密钥散列所必需的。这应该在之后呈现-hmac。不幸的是openssl需要密钥的二进制格式。有关更多信息,请参阅OpenSSL 邮件列表上的这个旧对话。
编辑#1:深入挖掘,如果你想将密钥指定为十六进制,你可以使用这样的一行:
echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304
Run Code Online (Sandbox Code Playgroud)
该函数的输出是散列第二次运行的输出,因此如果仅查看散列/HMAC 结果的大小,它与 SHA-256 无法区分。当然,内容将与只是散列数据(或键和数据连接)完全不同。
编辑 #2:但是,您尚未指定密钥,因此实际上跳过了 HMAC 并使用了 SHA-256。这已被标记为错误,请参阅此处
| 归档时间: |
|
| 查看次数: |
7564 次 |
| 最近记录: |