ruby openssl hmac php等价物

ruby openssl hmac php等价物,php,ruby,openssl,sha1,hmac,Php,Ruby,Openssl,Sha1,Hmac,我必须将这个ruby代码转换成PHP等效代码 [OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), secret_key, policy)].pack("m").strip 我将其转换为以下代码,但我不确定它是否正确 $s = hash_hmac('sha1', $secret_key, $policy); $s = base64_encode($sig); $s = trim($sig); return $s; 我不确定是否需

我必须将这个ruby代码转换成PHP等效代码

[OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), secret_key, policy)].pack("m").strip
我将其转换为以下代码,但我不确定它是否正确

$s = hash_hmac('sha1', $secret_key, $policy);
$s = base64_encode($sig);
$s = trim($sig);
return $s;
我不确定是否需要将hash_hmac的最后一个参数设置为true:

$sig = hash_hmac('sha1', $secret_key, $policy, true);
或者没有一个是正确的,应该以不同的方式进行


哪一个是正确的等价物?

好的,我刚刚自己安装了ruby进行测试。我已经测试过,等效值为:

$sig = hash_hmac('sha1', $policy, $secret_key, true);
$sig = base64_encode($sig);
$sig = trim($sig);
return $sig;

在php中,参数的顺序是颠倒的,先是数据,然后是键。原始输出参数必须为true。

好的,我刚刚安装了ruby进行测试。我已经测试过,等效值为:

$sig = hash_hmac('sha1', $policy, $secret_key, true);
$sig = base64_encode($sig);
$sig = trim($sig);
return $sig;
在php中,参数的顺序是颠倒的,先是数据,然后是键。并且raw_输出参数必须为true