我正在将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代码,这样我就可以正确生成签名。
感谢。
答案 0 :(得分:0)
如果要模拟true
的{{1}}部分(第四个参数),可以使用下一行:
hmac
以及 OpenSSL::HMAC.digest(digest, key, data)
的下一行:
false
其中
OpenSSL::HMAC.hexdigest(digest, key, data)
资源为here