NodeJS和Python Hashing之间的区别

时间:2017-05-18 03:32:46

标签: 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代码应该是什么,以及它们为什么表现不同?

1 个答案:

答案 0 :(得分:1)

这样的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

希望它对你有所帮助。