歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python對PHP服務器hmac_sha1簽名認證方法的匹配實現

Python對PHP服務器hmac_sha1簽名認證方法的匹配實現

日期:2017/3/1 10:11:57   编辑:Linux編程

如果你寫的PHP服務端API,在簽名中使用了PHP的hash_hmac函數,並且使用了base64編碼,

如下:


//HMAC-SHA1加密
$hmac_sha1_str = base64_encode(hash_hmac("sha1", $string_to_sign, $secret_access_key));
//編碼URL

$signature = urlencode($hmac_sha1_str);

現在一個Python客戶端程序想要來調用你的API,首先要通過安全認證,其簽名方法可實現如下:

signature = urllib.quote(
base64.b64encode(
hmac.new(secret_access_key, string_to_sign, digestmod=hashlib.sha1)
.hexdigest()
))

有兩點需要注意:

1. 不能使用encodestring, 因為該函數會在字符串末尾添加上行結束符號%0A,即\n

參見說明文檔:http://docs.python.org/library/base64.html

2. 不能使用hmac的digest方法,而需要使用hexdigest才能和PHP的hash_hmac結果對上。

Copyright © Linux教程網 All Rights Reserved