-1
トラブル同じHMACを生成するために、C#とJavascriptを取得を持つ:HMAC C#とJavaScript
C#:
string data = String.Format("{0}{1}{2}{3}{4}{5}", APPId, requestHttpMethod, requestUri, requestTimeStamp, nonce, requestContentBase64String);
var secretKeyBytes = Convert.FromBase64String(sharedKey);
byte[] signature = Encoding.UTF8.GetBytes(data);
using (HMACSHA256 hmac = new HMACSHA256(secretKeyBytes))
{
byte[] signatureBytes = hmac.ComputeHash(signature);
return (incomingBase64Signature.Equals(Convert.ToBase64String(signatureBytes), StringComparison.Ordinal));
}
が生成されますapZUyGrS23BcEd2q5guGS4uQWVvcCvaDXIjCrLn/HP4 =
Javascriptを:
var signatureRawData = "".concat(appId, requestHttpMethod, requestUri, requestTimeStamp, nonce, requestContentBase64String);
var hash = CryptoJS.HmacSHA256(signatureRawData, apiKey);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
生産:mFZyyKT03OOThRnt/9dG/0x + jRde3jCMvI6Rd0eKhEE =
彼はどこにC#コードのapiKeyですか?それはsharedKeyですか? sercretKeyBytesは文字列、char []、またはbyte []ですか?私は、secrtetKeyBytesが問題の原因となっている文字列に変換されていると思われます。 – jdweng
申し訳ありません、はい、そのsharedKey。いいえ、secretKeyBytesはHMCSHA256オブジェクトのバイトです。 –
これを回答として追加できますか?彼らはキーがJavaScriptの文字列だった。 –