подписи hmac в ruby ​​и javascript не совпадают, давая одинаковые значения - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь соединить свой бэкэнд в 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
...