我有以下的C#代码:
var apiKey = "SBB3aWxsIG1ha2UgbXbcQVBJIHN|Y3VyZQ==";
var apiSecret = "QaTW3xlf1U5ljdlAJSdltzT71fFF+eZ=";
var key = Convert.FromBase64String(apiSecret);
var provider = new System.Security.Cryptography.HMACSHA256(key);
var hash = provider.ComputeHash(Encoding.UTF8.GetBytes(apiKey));
var signature = Convert.ToBase64String(hash);
我正在尝试使用CryptJS库在JavaScript中获得相同的结果,但据我所知,我没有将密钥和秘密转换为字节数组,并且编码不正确。第一次尝试看起来像:
var apiKey = "SBB3aWxsIG1ha2UgbXbcQVBJIHN|Y3VyZQ==";
var apiSecret = "QaTW3xlf1U5ljdlAJSdltzT71fFF+eZ=";
var hash = CryptoJS.HmacSHA256(apiKey, apiSecret);
var sig = hash.toString(CryptoJS.enc.Base64);
apiSecret
。更糟糕的是,您完全忘记将apiKey
和apiSecret
传递给CryptoJS.HmacSHA256
。 - Artjom B.CryptoJS.HmacSHA256
的参数顺序? - Artjom B.