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

わかりました、テストのためにルビーを自分でインストールしました。私はテストしましたが、同等のものは次のとおりです。

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

パラメータの順序は php で逆になり、最初にデータ、次にキーになります。また、raw_output パラメーターは true である必要があります。

于 2012-08-20T17:54:24.223 に答える