Php 使用sha256 python使用base64编码计算hmac值

Php 使用sha256 python使用base64编码计算hmac值,php,python,base64,sha256,hmac,Php,Python,Base64,Sha256,Hmac,我正在尝试将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 $calcula

我正在尝试将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);
?>
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输出:

<?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);
?>
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()
YWM3NJLHMDZJMMVIMZDMM2E3YJHIZGY4NJHKNTZHOGZHMDGZZZDM4MGM1OTKYZTM4YJA5MDNKMDWNGEWMZJJMA==

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);
?>
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()
N7JyAyKocoDx/Opx36nGqAuUKdyGH+ROX+J5AJgQ+/g=


我能够使用Python 3匹配您的php输出:

>>> dig = hmac.new( bytes(API_SECRET_KEY,'ascii'), 
                    msg=bytes(data, 'ascii'), digestmod=sha256 )
>>> dig.digest()
b'7\xb2r\x03"\xa8r\x80\xf1\xfc\xeaq\xdf\xa9\xc6\xa8\x0b\x94)\xdc\x86\x1f\xe4N_\xe2y\x00\x98\x10\xfb\xf8'
>>> base64.b64encode(dig.digest())
b'N7JyAyKocoDx/Opx36nGqAuUKdyGH+ROX+J5AJgQ+/g='

伟大的它也适用于python2.7,我只将
字节(API\u SECRET\u KEY,'ascii')
更改为
字节(API\u SECRET\u KEY)
。非常感谢你的帮助