我必须将此ruby代码转换为PHP等效代码.
[OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), secret_key, policy)].pack("m").strip
Run Code Online (Sandbox Code Playgroud)
我把它转换成下面的代码,但我不确定它是否正确.
$s = hash_hmac('sha1', $secret_key, $policy);
$s = base64_encode($sig);
$s = trim($sig);
return $s;
Run Code Online (Sandbox Code Playgroud)
我不确定是否需要将hash_hmac的最后一个参数设置为true:
$sig = hash_hmac('sha1', $secret_key, $policy, true);
Run Code Online (Sandbox Code Playgroud)
或者没有一个是正确的,应该以不同的方式做到这一点.
哪个是正确的等价物?
小智 5
好的,我刚刚安装了ruby来测试.我测试过,等效的是:
$sig = hash_hmac('sha1', $policy, $secret_key, true);
$sig = base64_encode($sig);
$sig = trim($sig);
return $sig;
Run Code Online (Sandbox Code Playgroud)
参数的顺序在php,first data,key中反转.而raw_output参数必须为true.