我嘗試在Rails中創建一個HMAC並在PHP中驗證它。
Rails的外殼:Rails和PHP encode64不同意
pry(main)>appsecret = '00916893840fe0a29dfdc261efd3a26a&'
pry(main)>OpenSSL::HMAC.hexdigest('sha1', appsecret, 'GET&http%3A%2F%2Fopen.tianya.cn%2Foauth%2Frequest_token.php&oauth_consumer_key%3Dfc69b18eb12bab1e9b35d1093c4de9290516cfdc4%26oauth_nonce%3Dc09e4bf167fbc7eb374b1abb02b5268d%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1366882036%26oauth_version%3D1.0')
=> "8494f6237ee6042a3da8848db21284be17bf6ade"
PHP:
$appsecret = '00916893840fe0a29dfdc261efd3a26a&';
$signature = base64_encode(hash_hmac('sha1', $appsecret, 'GET&http%3A%2F%2Fopen.tianya.cn%2Foauth%2Frequest_token.php&oauth_consumer_key%3Dfc69b18eb12bab1e9b35d1093c4de9290516cfdc4%26oauth_nonce%3Dc09e4bf167fbc7eb374b1abb02b5268d%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1366882036%26oauth_version%3D1.0',true));
var_dump($signature);
Rails的結果:8494f6237ee6042a3da8848db21284be17bf6ade
PHP結果:ayw4/L22fCtXPvPPGaY/Ud8yhMU =
任何幫助將是巨大的感謝!
在Ruby on Rails的=>'00916893840fe0a29dfdc261efd3a26a&= 8494f6237ee6042a3da8848db21284be17bf6ade' 關於PHP =>'00916893840fe0a29dfdc261efd3a26a&= ayw4/L22fCtXPvPPGaY/Ud8yhMU = '? – Lian 2013-04-25 10:10:21
我認爲hash_hmac參數的順序在php,第一個數據,然後是關鍵字。 – Dinesh 2013-04-25 10:15:55