请解释? api 签名示例

please explain? api signature example

(更新:根据 John 的评论进行更改后仍然卡住)
我希望有人能用通俗易懂的语言解释下例中签名是如何生成的?我几乎被困在这一点上。我在在线哈希生成器(见下图)和我自己的代码中得到了相同的结果;但它与网站中的示例不同(也如下图所示)。

https://www.gate.io/docs/apiv4/en/#authentication 编辑:网站似乎只能通过 google 搜索访问,直接 link 给出 404?所以我将页面作为图片附上,见下文

请求:列出所有订单

GET /api/v4/futures/orders?contract=BTC_USD&status=finished&limit=50 HTTP/1.1

秘密:

secret

生成的签名字符串(编辑:已更新,感谢@John Glenn)

GET\n/api/v4/futures/orders\ncontract=BTC_USD&status=finished&limit=50\ncf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n1541993715

(注意网站上的例子,为了便于阅读,有换行符)

根据例子生成的签名:

eae42da914a590ddf727473aff25fc87d50b64783941061f47a3fdb92742541fc4c2c14017581b4199a1418d54471c269c03a38d788d802e2c306c37636389f0

来自网站的解释:

Signature generation method is HexEncode(HMAC_SHA512(secret, signature_string)), i.e., the hexadecimal digest output of HMAC-SHA512 with APIv4 secret as secret and signature string as message.

但如果我将它放入 HMAC-SHA512 生成器(例如,https://www.javainuse.com/hmac),我得到的值是:

58000238bf5eef226028e108df259184f14bf3021eb27c324a808334d187da42c38f4510b30215ee9b0c05d6352396e99f67fa920079746bb4dfd70506592f6d

我怀疑我遗漏了一个非常重要的点,但此时我很迷茫..
非常感谢您的帮助!

您生成的签名字符串不正确。根据 to 网站,这就是构建它的方式,每个元素由 \n.

分隔
  • 请求动词
  • 请求URL
  • 来自 URL
  • 的纯文本查询字符串
  • 请求正文的哈希,在本例中为空字符串
  • 以秒为单位的 Unix 时间戳

对于您的示例,生成的签名字符串值应为:

  • GET(但你有 POST)
  • /api/v4/futures/orders
  • contract=BTC_USD&status=finished&limit=50(从你的字符串中丢失)
  • 只需使用示例中的空字符串哈希值
  • 使用示例中的 Unix 时间戳

已解决! “\n”不是正则表达式,而是示例中的实际换行符。换句话说,换行符应作为 ascii 换行符输入。 然后我在生成器中得到了与网站相同的结果。