0

次の説明を提供する ankoder.com からのコールバックの署名を検証する必要があります。

これは、Base64 でエンコードされた秘密鍵の HMAC-SHA1 ダイジェストの URL エスケープ文字列と、URL エスケープされていないメッセージです。

$passkey = urlencode(base64_encode(hash_hmac('sha1', urldecode($str), $private_key, true)));

彼らは次のRubyの例を提供します

encoded_signature = CGI.escape Base64.encode64(HMAC::SHA1::digest(private_key, CGI.unescape(message))).strip

コールバックから返されたサンプル データに対してこれを実行しましたが、同じ署名を取得していません。PHP で Ruby コードを複製するにはどうすればよいですか?

編集 問題は、送信される末尾の空白でした。

4

1 に答える 1

2

PHP コードは Ruby コードと一致します。問題は別の場所にあるはずです。

キーが正しく、メッセージが正しく解析されているかどうかを確認します (urldecode、次に json_decode)。

于 2010-06-24T11:34:25.743 に答える