Использование HMAC SHA256 в Ruby

Я пытаюсь применить HMAC-SHA256 для создания ключа для REST API.

Я делаю что-то вроде этого:

def generateTransactionHash(stringToHash)
  key = '123'
  data = 'stringToHash'
  digest = OpenSSL::Digest.new('sha256')

  hmac = OpenSSL::HMAC.digest(digest, key, data)
  puts hmac
end

вывод этого всегда таков: (если я помещаю '12345' в качестве параметра или 'HUSYED815X', я получаю то же самое)

ۯw/{o���p�T����:��a�h��E|q

API не работает из-за этого... Кто-нибудь может мне помочь?

2 ответов


согласно документации OpenSSL::HMAC.digest

возвращает код аутентификации, который экземпляр представляет в виде двоичной строки.

Если у вас есть проблема с использованием этого, возможно, вам нужна шестнадцатеричная закодированная форма, предоставленная OpenSSL::HMAC.hexdigest

пример

key = 'key'
data = 'The quick brown fox jumps over the lazy dog'
digest = OpenSSL::Digest.new('sha1')

OpenSSL::HMAC.digest(digest, key, data)
#=> "\xDE|\x9B\x85\xB8\xB7\x8A\xA6\xBC\x8Az6\xF7\n\x90p\x1C\x9D\xB4\xD9"

OpenSSL::HMAC.hexdigest(digest, key, data)
#=> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"

Попробуйте Это:

hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, data)