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 в документации.