我正在尝试将此代码从Javascript转换为Python3:
import crypto from 'crypto';
const secretKey = 'NgTriSCalcUltAbLoGResOnOuSeAKeSTraLryOuR'
function verifySignature(rawBody) {
const calculatedSignature = crypto
.createHmac('sha256', secretKey)
.update(rawBody, 'utf8')
.digest('base64');
return calculatedSignature;
}
console.log(verifySignature('a'));
使用该代码,我得到以下输出:vC8XBte0duRLElGZ4jCsplsbXnVTwBW4BJsUV1qgZbo=
我试着用下面的代码把同样的函数转换成Python语言:
- 已更新**
import hmac
import hashlib
message = "a"
key= "NgTriSCalcUltAbLoGResOnOuSeAKeSTraLryOuR"
hmac1 = hmac.new(key=key.encode(), msg=message.encode(), digestmod=hashlib.sha256)
message_digest1 = hmac1.hexdigest()
print(message_digest1)
但我得到这个错误:* * 属性错误:"hash"对象没有属性"digest_size"**
有人能告诉我,在Python中实现相同的输出还缺少什么吗?
谢谢你!:)
1条答案
按热度按时间luaexgnf1#
你没有从return语句的digest()中得到base64。在你的javascript代码中,它也是用UTF-8编码的,应该在下面指定。你的python代码中也没有提供这个键。
我刚刚测试的这个代码片段应该会生成与您的javascript代码相同的结果:
它应返回: