2012-12-07 33 views
1

我正在嘗試採用ASCII編碼字符串的SHA256總和。首先,我嘗試了sha256sum可執行文件:sha256sum可執行文件和PyCrypto庫之間的差異

$ echo foo | sha256sum 
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c 

但是,當我使用PyCrypto庫,我得到不同的東西:

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

我得到如下:

c5aac592460a9ac7845e341090f6f9c81f201b63e5338ee8948a6fe6830c55dc 

我懷疑我錯過了第一個,也就是echo foo可能有一個分隔符或什麼的,但我一直無法弄清楚什麼。

這兩種情況有什麼不同?

回答

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' 
+0

完美,謝謝! – tlehman