将PHP中的hash_hmac转换为rails等效项

时间:2015-12-10 13:57:06

标签: php ruby-on-rails ruby

我想将PHP哈希代码转换为等效的ruby或rails代码。

$publicHash = '3441df0babc2a2dda551d7cd39fb235bc4e09cd1e4556bf261bb49188f548348';
$privateHash = 'e249c439ed7697df2a4b045d97d4b9b7e1854c3ff8dd668c779013653913572e';
$content = json_encode( array( 'test' => 'content' ) );
$hash = hash_hmac('sha256', $content, $privateHash);

$ content是请求参数hash。

我使用

转换为ROR
public_hash =  '3441df0babc2a2dda551d7cd39fb235bc4e09cd1e4556bf261bb49188f548348'
private_hash = 'e249c439ed7697df2a4b045d97d4b9b7e1854c3ff8dd668c779013653913572e'
content = JSON::encode( paramsString )
hash = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), private_hash, content)

但没有运气。我缺少什么?

1 个答案:

答案 0 :(得分:1)

你可以这样做

require 'openssl'
require 'json'

private_hash = 'e249c439ed7697df2a4b045d97d4b9b7e1854c3ff8dd668c779013653913572e'
content = { "test" => "content" }.to_json
digest = OpenSSL::Digest.new('sha256')

hash = OpenSSL::HMAC.hexdigest(digest, private_hash, content)

有关详细信息,请参阅http://ruby-doc.org/stdlib-2.2.3/libdoc/openssl/rdoc/OpenSSL/HMAC.html