Хеш HMAC SHA256 генерирует изменения, когда переменная используется в функции хеширования, чем с использованием литерала.хеш Ruby hmac sha256 отличается для переменных по сравнению с буквальным
Мне нужно объединить 4 параметра для генерации строки сообщения, которая хэшируется с помощью секретного ключа. Строка конкатенированных сообщений генерирует другой хеш, чем использование значения сообщения как литерала.
require 'base64'
require 'openssl'
securityKey = 'A93reRTUJHsCuQSHR+L3GxqOJyDmQpCgps102ciuabc='
content = 'hello'
id = '1000000855'
tsp = '1460852115'
guid = '75c6016eaa1e43b4807ba25232797714'
contentmd5 = Base64.encode64(OpenSSL::Digest::MD5.digest(content))
inputString = id + tsp + guid + contentmd5
puts inputString
#Input String is
#'1000000855146085211575c6016eaa1e43b4807ba25232797714XUFAKrxLKna5cZ2REBfFkg=='
digest = OpenSSL::Digest.new('sha256')
hmac = OpenSSL::HMAC.digest(digest, securityKey, inputString)
securityToken = Base64.encode64(hmac)
puts securityToken
#Hash generated is 7ihOEZNeoJMwjLt84I8WfN5b0VwgYNOg8abPA3nZ0SM=
digest = OpenSSL::Digest.new('sha256')
hmac = OpenSSL::HMAC.digest(digest, securityKey, '1000000855146085211575c6016eaa1e43b4807ba25232797714XUFAKrxLKna5cZ2REBfFkg==')
securityToken = Base64.encode64(hmac)
puts securityToken
#Hash generated is gPNytNGMbhg8b27rklqmEK/9xjNAcOq+7nldzyDL4g0=
Очень приятно. Я думаю, что нужно использовать проверку ('p') вместо' puts', чтобы найти такие различия. –
Это действительно приятно. Оно работает. Я был совершенно в недоумении, почему литерал будет работать, но переменная не будет даже, если отображаемая строка будет такой же. Это объясняет это. Большое спасибо. – liferunsoncode