web-dev-qa-db-ja.com

pythonコードでSHA256-HMACを使用する方法は?

このURLからメッセージとキーを取得しています

import hmac
import hashlib
import base64
my = "/api/embedded_dashboard?data=%7B%22dashboard%22%3A7863%2C%22embed%22%3A%22v2%22%2C%22filters%22%3A%5B%7B%22name%22%3A%22Filter1%22%2C%22value%22%3A%22value1%22%7D%2C%7B%22name%22%3A%22Filter2%22%2C%22value%22%3A%221234%22%7D%5D%7D"
key = "e179017a-62b0-4996-8a38-e91aa9f1"
print(hashlib.sha256(my + key).hexdigest())

私はこの結果を得ています:

2df1d58a56198b2a9267a9955c31291cd454bdb3089a7c42f5d439bbacfb3b88

期待される結果:

adcb671e8e24572464c31e8f9ffc5f638ab302a0b673f72554d3cff96a692740
6

コードでhmacをまったく使用していません。

hmacを使用する一般的な方法は、キーとメッセージからHMACオブジェクトを作成し、コンストラクターを渡すことでハッシュアルゴリズムを識別します。

h = hmac.new( key, my, hashlib.sha256 )
print( h.hexdigest() )

出力する必要があります

adcb671e8e24572464c31e8f9ffc5f638ab302a0b673f72554d3cff96a692740

サンプルデータの場合。

13
Neil Slater

あなたのためのいくつかのコード、使いやすい:

import hmac
import hashlib
import binascii

def create_sha256_signature(key, message):
    byte_key = binascii.unhexlify(key)
    message = message.encode()
    return hmac.new(byte_key, message, hashlib.sha256).hexdigest().upper()

create_sha256_signature("E49756B4C8FAB4E48222A3E7F3B97CC3", "TEST STRING")
1
Wilson Wu