2017-01-20 183 views
-2
hash_hmac的

我想转换下面的PHP代码到Python的Python相当于在PHP

"<?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

你能描述一下*它如何不工作,提供输入的例子,实际的输出和预期的输出? – Tagc

回答

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() 

然后你就可以将其合并成1行:

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

注意:在使用replace("\n", "")去除新线是没用的,base64.b64encode不会(base64.encodestring将会)