NodeJS 和 Python 哈希之间的区别
Difference between NodeJS and Python Hashing
我正在尝试将一些 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
希望对你有帮助。
我正在尝试将一些 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
希望对你有帮助。