ruby openssl hmac php equivalent


ruby openssl hmac php equivalent

我必须将这个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中的参数顺序颠倒,先是数据,然后是键。raw_output参数必须为true。