我正在尝试应用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"