我想将以下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())
但它不起作用?
答案 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
会)