歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

如果你寫的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