Salesforce создает неверное значение HMAC SHA1

Я пытаюсь сгенерировать значение HMAC в Salesforce с помощью функции Crypto generateMac, но результат не совпадает с другими утилитами.

Например, я пытаюсь хэшировать значение Hash me используя ключ ac67ad3b8771bf63d4fa9582845a18f921514f36, Я ожидаю, что результат будет 66fe419859ac42ad88354dfa52f2196a26d767e1, но это на самом деле 7d1f56c728dfefdcb9edb72b7c0c8df2acf1cae9,

Мой апекс-код:

Blob mac = Crypto.generateMac('HMacSHA1', Blob.valueOf('Hash me'),
    Blob.valueOf('33a1211c0ee01511ccba1e456bb95503')); 
string hasedValue = EncodingUtil.convertToHex(mac);

Я предполагаю, что проблема связана с преобразованием в / из двоичного файла или может быть связана с делом, но я не могу соответствовать ожидаемому результату.

Мой ожидаемый результат основан на результатах http://hash.online-convert.com/sha1-generator и нескольких других онлайн-калькуляторов HMAC.

1 ответ

Решение

Другой вариант заключается в кодировании base 64:

EncodingUtil.base64Encode(mac);

Я был бы удивлен, если generateMac + convertToHex не работает для вас. Они всегда работали на меня. Я уверен, что вы посмотрели, но на всякий случай я рассмотрю пример веб-сервисов Amazon в документации.

Другие вопросы по тегам