python - NodeJS 和 Python 哈希的区别

标签 python node.js sha

我正在尝试将一些 NodeJS 代码移植到 Python 3,但无法让 SHA1 哈希具有相同的行为。

每种语言的这段代码都显示了问题:

NodeJS

var crypto = require('crypto');
crypto.createHash('sha1');
var h = crypto.createHash('sha1');
h.update(new Buffer('pXHepU2vIdYJuIAN', 'base64').toString('binary'));
console.log(h.digest('hex')); // ea70f5b1ec762290cefd37bc0f9a7421dcc93466

Python 3

import hashlib
import base64
h = hashlib.sha1()
h.update(base64.b64decode(b'pXHepU2vIdYJuIAN'))
print(h.hexdigest()) # 74161d2d37d9fff312dd396d5f779133c4bfd88d

我认为我以错误的格式传递了 Python 输入,就好像我从它匹配的 NodeJS 代码中删除了 .toString('binary') 一样。

谁能向我解释一下 Python 代码应该是什么,以及为什么它们的行为不同?

最佳答案

Python代码如下:

import hashlib
import base64

h = hashlib.sha1()
h.update(base64.b64decode(b'pXHepU2vIdYJuIAN').decode('latin1').encode())
print(h.hexdigest()) #result is ea70f5b1ec762290cefd37bc0f9a7421dcc93466

我已经提到过这个问题Nodejs crypto vs python hashlib

希望对您有帮助。

关于python - NodeJS 和 Python 哈希的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038132/

相关文章:

python - 如何编写一个 `try`/`except` block 来捕获所有异常?

python - 如何在 Pandas 图中旋转 x 轴刻度标签

javascript - Mongoose findByIdAndUpdate 不更新数据

node.js - 如何将一个函数结果传递给 Node.js 中的另一个函数

c - SHA-1哈希错误

python - 如何找到Python库的安装路径?

python - 向 URL 添加 2 个不同的参数并返回自定义响应

javascript - 这是什么意思???当我使用 strongloop Controller API 时,Vanilla Node.js I/O 阻塞会消失吗?

c - OpenSSL SHA1 未验证 NIST SHAKE 测试 vector ?

hash - SHA-3 变体如何命名?