在rails上的ruby中使用base64_encode和hash_hmac生成签名

时间:2015-09-29 12:02:50

标签: ruby-on-rails ruby ruby-on-rails-3 hmac hmacsha1

我正在将PHP代码转换为Rails代码,我正面临使用base64_encode和hash_mac生成签名的问题。在php中生成的签名长度为48,而在Rails中,它的长度不同但是固定。

例如在PHP中,签名为Jth7QaN%2F2eCMZxqjZRP%2FZ%2F%2FtKcHHkGf%2F6XB8xPBvp3I%3D

并且在rails中4ZC7dPRWHl6%2BzDcw9pDnfo2MMRCMNSvTZ8a7a6iPo6Q%3D%0A

如何将以下代码转换为Rails

PHP代码:

return base64_encode(
    hash_hmac('sha256', $data, $key, true)
);

下面是我正在使用的Rails代码,但生成的单数长度不同

Rails代码:

signature_val = Base64.encode64(OpenSSL::HMAC.digest('sha256', key, data))

任何人都可以帮我将PHP代码转换为Correct Rails代码,这样我就可以正确生成签名。

感谢。

1 个答案:

答案 0 :(得分:0)

如果要模拟true的{​​{1}}部分(第四个参数),可以使用下一行:

hmac

以及 OpenSSL::HMAC.digest(digest, key, data) 的下一行:

false

其中

OpenSSL::HMAC.hexdigest(digest, key, data)

资源为here