我将尝试将一段PHP代码转换为Python语言。
该PHP函数使用sha256和base64编码计算hmac值。
我的PHP函数:
<?php
define('SHOPIFY_APP_SECRET', 'some_key');
function verify_webhook($data)
{
$calculated_hmac = base64_encode(hash_hmac('sha256', $data,
SHOPIFY_APP_SECRET, true));
echo $calculated_hmac;
}
$data = "some_data";
$verified = verify_webhook($data);
?>
我的 Python 函数:
import base64
import hmac
import binascii
from hashlib import sha256
API_SECRET_KEY = "some_key"
data = "some_data"
def verify_webhook():
dig = hmac.new(
API_SECRET_KEY,
msg=data,
digestmod=sha256
).digest()
calculated_hmac = base64.b64encode(bytes(binascii.hexlify(dig)))
print(calculated_hmac)
verify_webhook()
即使我使用相同的密钥和数据,我仍然得到了不同的输出。我还不知道我错在哪里,请帮忙解决!
Python 输出:
YWM3NjlhMDZjMmViMzdmM2E3YjhiZGY4NjhkNTZhOGZhMDgzZDM4MGM1OTkyZTM4YjA5MDNkMDEwNGEwMzJjMA==
Php 输出:
N7JyAyKocoDx/Opx36nGqAuUKdyGH+ROX+J5AJgQ+/g=
bytes(API_SECRET_KEY,'ascii')
更改为bytes(API_SECRET_KEY)
。非常感谢您的帮助。 - abdelhalimresu