HMAC C# и JavaScript

Возникли проблемы с получением C# и Javascript для создания одного и того же HMAC:

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=


person Ethan Schofer    schedule 04.04.2016    source источник
comment
Где у него apiKey в коде c#? Это общий ключ? SercretKeyBytes — это строка, char[] или byte[]? Я подозреваю, что secrtetKeyBytes преобразуется в строку, которая является причиной проблемы.   -  person jdweng    schedule 04.04.2016
comment
Извините, да, это общий ключ. Нет, secretKeyBytes определенно все еще байты в объекте HMCSHA256.   -  person Ethan Schofer    schedule 05.04.2016
comment
Можете ли вы добавить это в качестве ответа? Ключ был строкой в ​​javascript.   -  person Ethan Schofer    schedule 05.04.2016
comment
Поскольку теперь у вас есть ответ, который просто угадывает решение, вы можете либо отредактировать свой вопрос, включив в него недостающий код, чтобы ответ имел смысл, либо просто удалить вопрос (я не вижу никакой ценности для будущих читателей).   -  person Artjom B.    schedule 05.04.2016


Ответы (1)


Где находится apiKey в коде С#? Это общий ключ? SercretKeyBytes — это строка, char[] или byte[]? Я подозреваю, что secrtetKeyBytes преобразуется в строку, которая является причиной проблемы.

person jdweng    schedule 04.04.2016