Я хотел бы преобразовать следующий код 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())
Но это не работает?
В вашем коде было много синтаксических ошибок (забытые запятые, непоследовательность скобок и т. Д.). Разбейте код на строки, чтобы вы могли правильно его разработать:
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
будут)
Других решений пока нет …