Python相当于PHP中的hash_hmac

时间:2017-01-20 07:58:13

标签: php python

我想将以下php代码转换为python

"<?php echo(strtoupper(hash_hmac('SHA256', $hashinput, pack('H*',$securesecret)))); ?>"

这就是我提出的

base64.b64encode(hmac.new(bytearray(securesecret.upper(), "ASCII") bytearray(hashInput.rstrip('&'),"ASCII") , hashlib.sha512).digest())).decode("ASCII").replace("\n", "").upper())

但它不起作用?

1 个答案:

答案 0 :(得分:2)

您的代码中存在许多语法错误(被遗忘的逗号,括号不连贯等)。将代码拆分为行,以便正确开发:

my_secure = bytearray(securesecret.upper(), "ASCII")
my_input = bytearray(hashInput.rstrip('&'),"ASCII")
my_hmac = hmac.new(my_secure, my_input, hashlib.sha512)
my_hmac_digest = my_hmac.digest()

base64.b64encode(my_hmac_digest).decode("ASCII").upper()

然后你可以将它合并为一行:

base64.b64encode(hmac.new(bytearray(securesecret.upper(), "ASCII"), bytearray(hashInput.rstrip('&'),"ASCII"), hashlib.sha512).digest()).decode("ASCII").upper()

注意:使用replace("\n", "")删除新行是没用的,base64.b64encode不会将输出拆分为行(base64.encodestring会)