You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CryptoJS计算SHA512哈希的JavaScript代码转换为VB.NET

Bittrex v3 接口Content哈希计算问题解答

现有代码的核心错误

你目前的VB.NET实现用错了哈希算法:

  • 原JS逻辑里计算contentHash用的是无密钥的普通SHA512算法
  • 你误用了HMACSHA512(带密钥的哈希认证算法),二者计算结果完全不一致,会直接导致鉴权失败。

注意HMACSHA512是后续计算请求签名Signature头用的,和Content-SHA512头的计算是两个独立步骤,不要混淆。

空字符串哈希的原因

对空字符串计算SHA512是Bittrex v3鉴权规则的强制要求:

  • 所有API请求,无论使用什么HTTP方法,都必须携带Content-SHA512请求头
  • 调用GET、DELETE这类不需要提交请求体的只读接口时,请求体本身就是空字符串,因此直接对空字符串计算哈希即可,不存在requestBody赋值遗漏的问题
  • 只有调用POST、PUT等需要提交参数的接口时,requestBody才是你序列化后的JSON请求参数内容

修正后的contentHash计算代码

' 计算空请求体的Content哈希,有请求体时把空字符串替换为JSON序列化后的请求内容即可
Dim requestContent As String = ""
Using sha512 As SHA512 = SHA512.Create()
    Dim hashResult As Byte() = sha512.ComputeHash(System.Text.Encoding.UTF8.GetBytes(requestContent))
    ' 你原有ExchangesClass.getString方法转十六进制小写的逻辑完全正确,可以直接复用
    Dim contentHash As String = ExchangesClass.getString(hashResult)
End Using

内容的提问来源于stack exchange,提问作者user4951

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:54:25