NodeJS和Python哈希之间的区别

我试图将一些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 

我想我以错误的格式传递Pythoninput,就像从匹配的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 

我已经提到了这个问题Nodejsencryption与Python hashlib

希望它可以帮助你。