Mam następujący kod w C#Computing Podpis/Hash w JavaScript i mieć taki sam wynik jak 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);
Próbuję uzyskać ten sam rezultat w JavaScript z wykorzystaniem biblioteki CryptJS ale z tego co mogę powiedzieć I nie konwertuję klucza i sekretu na tablice bajtów, a kodowanie jest niepoprawne. Pierwsza próba wygląda następująco:
var apiKey = "SBB3aWxsIG1ha2UgbXbcQVBJIHN|Y3VyZQ==";
var apiSecret = "QaTW3xlf1U5ljdlAJSdltzT71fFF+eZ=";
var hash = CryptoJS.HmacSHA256(apiKey, apiSecret);
var sig = hash.toString(CryptoJS.enc.Base64);
Czytaj kodu, które zostały zamieszczone tutaj ponownie. Zapomniałeś przetworzyć kodowane przez Base64 'apiSecret' w CryptoJS. Co gorsza, zapomniałeś całkowicie przekazać 'apiKey' i' apiSecret' do 'CryptoJS.HmacSHA256'. –
To było szybkie wycięcie i wklejenie oryginalnego kodu z dokumentów CryptoJS. Przekazywanie poprawnych wartości nadal go nie naprawia, ale dzięki za wskazanie tego. Czy masz jakiś rzeczywisty wgląd w to, żeby to działało? –
Tak, mam rzeczywisty wgląd, który już wam udostępniłem. Już powinieneś mieć narzędzia, które sprawią, że będzie działać. Czy masz problemy z analizowaniem łańcucha zakodowanego w Base64 za pomocą CryptoJS? Jeśli nie, czy zamieniłeś kolejność argumentów na 'CryptoJS.HmacSHA256'? –