我在C#下面的代碼計算簽名/哈希在Javascript和有相同的結果,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);
閱讀,你在這裏再次發佈的代碼。你忘了在CryptoJS中解析Base64編碼的'apiSecret'。更糟的是,你完全忘記了將'apiKey'和'apiSecret'傳遞給'CryptoJS.HmacSHA256'。 –
這是CryptoJS文檔原始代碼的快速剪切和粘貼。傳遞正確的值仍然不能解決它,但謝謝指出。你有任何真正的洞察力,使其工作? –
是的,我有實際的見解,我已經與你分享。你已經應該有工具來使它工作。用CryptoJS解析Base64編碼的字符串有困難嗎?如果沒有,你是否將參數的順序交給了'CryptoJS.HmacSHA256'? –