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
希望它可以帮助你。