Использование 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"