ruby-on-rails – 在Ruby中使用HMAC SHA256

我正在尝试应用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无法正常工作…有人可以帮助我吗?

解决方法

根据文档 OpenSSL::HMAC.digest

Returns the authentication code an instance represents as a binary string.

如果您在使用时遇到问题,可能需要OpenSSL :: HMAC.hexdigest提供的十六进制编码格式

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

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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...