gpt4 book ai didi

python - 为什么这段代码中 Python 和 Node.js 的 HMAC 结果不同?

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:30 45 4
gpt4 key购买 nike

最近有一个任务是让HMAC与API服务器通信。我得到了一个 node.js 版本的示例代码,它使消息的 HMAC。使用概念和示例,我必须制作一个与 node.js 版本等效的 python 代码,但结果不同,但我不知道为什么。

请检查这两个代码并帮助找出不同之处。

python 3.0

import hmac
import string
import hashlib
import base64

secret = 'PYPd1Hv4J6'
message = '1515928475.417'
key = base64.b64encode(secret.encode('utf-8'))

hmac_result = hmac.new(key, message.encode('utf-8'), hashlib.sha512)
print(base64.b64encode(hmac_result.digest()))

结果(Python 3.6)

b'7ohDRJGMGYjfHojnrvNpM3YM9jb+GLJjbQvblzrE17h2yoKfIRGEBSjfOqQFO4iKD7owk+gSciFxFkNB+yPP4g=='

Node.JS

var crypto = require('crypto');

var secret = 'PYPd1Hv4J6';
var message = '1515928475.417'
var key = Buffer(secret, 'base64');

var hmac = crypto.createHmac('sha512', key);
var hmac_result = hmac.update(message).digest('base64');
console.log(hmac_result)

结果(Node.JS 6.11)

m6Z/FxI492VXKDc16tO5XDNvty0Tmv0b1uksSbiwh87+4rmg43hEXM0WmWzkTP3aXB1s5rhm05Hu3g70GTrdEQ==

最佳答案

你的输入键不一样,输出的也会不一样。

Node :

var secret = 'PYPd1Hv4J6';
var message = '1515928475.417'
var key = Buffer(secret, 'base64'); // buffer of bytes from the base64-encoded string 'PYPd1Hv4J6'
// <Buffer 3d 83 dd d4 7b f8 27>

python :

secret = 'PYPd1Hv4J6'
message = '1515928475.417'
key = base64.b64encode(secret.encode('utf-8')) # did you mean b64decode here?

关于python - 为什么这段代码中 Python 和 Node.js 的 HMAC 结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48303874/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com