【发布时间】:2014-11-18 05:27:08
【问题描述】:
我有以下版本的 Python 代码:
import hashlib
msg = 'abc'
print msg
sha256_hash = hashlib.sha256()
sha256_hash.update(msg)
hash_digest = sha256_hash.digest()
print hash_digest
以及对应的Node js版本:
var crypto= require('crypto');
var msg = 'abc';
var shasum = crypto.createHash('sha256').update(msg);
var hashDigest = shasum.digest();
console.log(hashDigest);
但是,两者的二进制输出都略有偏差:
- 节点:�x����AA@�]�"#�a��z���a��
- Python:�x���AA@�]�"#�a��z���a��
虽然在两个库之间,十六进制表示是正确的。我在这里做错了吗?
【问题讨论】:
-
您使用的是什么版本的 Node?我很困惑,因为至少对我来说,
hashDigest是Buffer,所以你的示例输出不可能是正确的。对于 python,如果你真的打印出hash_digest的字节,你会得到什么?在我的测试中,我在运行这段代码时得到了相同的二进制内容。 -
节点版本 0.10.25。对于节点,只需执行 console.log('OP:'+hashDigest)。我仍然无法确定我做错了什么。你能粘贴你的输出吗?
-
我也在Node 0.10.32上试过了,输出和上面一样。
-
您究竟为什么要比较字符串值而不是十六进制值?
标签: python node.js cryptography cryptojs hashlib