sha256sum可执行文件和PyCrypto库之间存在差异

时间:2012-12-07 06:04:22

标签: python command-line sha256

我正在尝试使用ASCII编码字符串的SHA256和。首先,我尝试了sha256sum可执行文件:

$ echo foo | sha256sum
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c

但是当我使用PyCrypto库时,我会得到一些不同的东西:

from Crypto.Hash import SHA256
h = SHA256.new();
h.update('foo');
print(h.hexdigest());

我得到以下内容:

c5aac592460a9ac7845e341090f6f9c81f201b63e5338ee8948a6fe6830c55dc

我怀疑我错过了关于第一个问题的内容,即echo foo可能有分隔符或其他内容,但我无法弄清楚是什么。

这两种情况有什么不同?

1 个答案:

答案 0 :(得分:7)

命令echo foo在输出结尾添加换行符,您应该使用-n选项:

$ echo -n foo | sha256sum
2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae  -
$ python
Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> hashlib.sha256('foo').hexdigest()
'2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae'