1

我必须将此 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);

或者没有一个是正确的,应该以不同的方式做到这一点。

哪个是正确的等价物?

4

1 回答 1

5

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

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

php中参数的顺序是颠倒的,先是数据,后是key。并且 raw_output 参数需要为真。

于 2012-08-20T17:54:24.223 回答