Я пытаюсь соединить свой бэкэнд в ruby с рельсами и конечной точкой, и он запрашивает подпись hmac для каждого запроса.они дали мне .html с некоторым javascript, который возвращает в консоли обозревателя их значение hmac с учетом ключа и полезной нагрузки, но когда я делаю эквивалентный код в ruby на рельсах, это дает мне другое значение при тех же параметрах.затем я вставляю html и мой код в ruby, мне нужен мой код ruby, чтобы дать ответ javascript.
Я попытался изменить кодировку входных данных моего кода на ascii, iso8859-1 и utf.-8.Я сравнил свой ответ hmac с ответами, данными несколькими генераторами hmac в Интернете, и они дают мой ответ exepto для 1 страницы, который дает ответ javascript.это тот, который дает ответ Javascript: https://www.liavaag.org/English/SHA-Generator/HMAC/
это javascreipt от третьего лица
function toHex (message) {
var str = '', c;
for (var i = 0; i < message.length; i++) {
c = message.charCodeAt(i);
str += c.toString(16) ;
}
return str;
}
function sign(originalMessage, key){
var message =toHex(originalMessage);
var signature, hmac;
hmac = new sjcl.misc.hmac(sjcl.codec.hex.toBits(key),
sjcl.hash.sha256);
signature =sjcl.codec.hex.fromBits(hmac.encrypt(sjcl.codec.hex.toBits(message)));
return signature;
}
это мой код: def toHex (message) str = ''caracter = 0 cont = 0 while (cont
def sign(original_message, key)
#byebug
message = toHex(original_message)
signature = ''
signature = OpenSSL::HMAC.hexdigest("SHA256", key, message)
return signature
end