あるAPIを使用するための認証で下記のPythonコードのように、sha1ダイジェストを生成し、それを16進文字列に変換したものを使用しなくてはなりません。
■Python(APIサンプル)
sha1.new('sample'+'6c4eb5e906ed115539ebae65c8f3e0231eceb275'+str(int(time.time()))).hexdigest()
APIのサンプルでは上記のPythonコードで取得していましたが、下記のPHPで取得しようとしたところ期待値が取得できませんでした…
■PHP(取得不可)
sha1('sample'+'6c4eb5e906ed115539ebae65c8f3e0231eceb275'+time())
上記のpythonコードをPHPに変換したいのですがどうすればよいでしょうか?
sha1('sample'.'6c4eb5e906ed115539ebae65c8f3e0231eceb275'.time())
これではどうですか。
id:GoldenDawnさんの回答で、Python同様40文字のハッシュ値が返されると思うのですが、「取得不可」とは何が取得不可なのでしょうか。
何かエラーは出ていますか。
以下のようなPHPスクリプトを実行します。
<?php echo sha1('sample'.'6c4eb5e906ed115539ebae65c8f3e0231eceb275'.time()); ?>
ブラウザで開くと以下のような文字列が出力されます。
cac4b5331fbcd53e56c86d7e40c30d51d0d93a40
Pythonの場合も同じです。
import sha import time print sha.new('sample'+'6c4eb5e906ed115539ebae65c8f3e0231eceb275'+str(int(time.time()))).hexdigest()
上記のスクリプトを実行すると以下のような出力が得られます。
f24318da13623004b1bee566165a105861f60166
timeの出力結果を利用するので、結果となる文字列は異なります。
お二方ともに回答いただきありがとうございました。
まことに申しあげにくいのですが、ただいまAPI提供者から連絡があり動作不具合はダイジェストキーの問題ではなかったようです。
提供側の処理でユーザーの環境によって何らかの制限があった為にレスポンスでエラーを返していたようです。
お騒がせいたしました。
GoldenDawnさん、すいません。
Pythonとゴチャゴチャになってしまい掲載したコードを間違えてしまいました。
sha1('sample'.'6c4eb5e906ed115539ebae65c8f3e0231eceb275'.time())
↑このコードで取得不可でした。。