Как создать токен в кодировке hmac_sha1 и base64, например AWS - PullRequest
0 голосов
/ 13 апреля 2020

Я разрабатываю API, похожий на AWS S3.

Но подпись, сгенерированная моим кодом, отличается от подписи AWS.

import hashlib
import hmac
import base64

def hmac_base64_signature(key, message):
    key = key.encode('utf-8')
    message = message.encode('utf-8')

    hmac_new = hmac.new(key, message, hashlib.sha1)
    print(hmac_new.hexdigest())

    signature = base64.b64encode(hmac_new.digest()).decode('iso_8859_1')
    print(signature)
    return signature

if __name__ == '__main__':

    hmac_base64_signature(
        'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
        'GET\n\n\nTue, 27 Mar 2007 19:36:42 +0000\n/awsexamplebucket/photos/puppy.jpg')

I ' m 9bb7966554d7d2f1c419bab302b7c69bd5c114a4 для hma c и m7eWZVTX0vHEGbqzArfGm9XBFKQ= для подписи base64. Которые отличаются от значений в выборке AWS (то есть bWq2s1WEIj+Ydj0vQ697zp+IXMU=).

https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationExamples

Я также попробовал некоторые онлайн-инструменты. Они также дают разные результаты для одного и того же ввода.

https://www.freeformatter.com/hmac-generator.html

https://codebeautify.org/hmac-generator

Я не могу найти любые сообщения об ошибках образцов AWS. Так что я думаю, что-то не так с моим кодом. Может ли кто-нибудь помочь с этим? Спасибо.

...