2

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区切り文字か何かがあるのではないかと思いますが、何がわからないのです。

これら2つの状況の違いは何ですか?

4

1 に答える 1

9

このコマンド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'
于 2012-12-07T06:42:35.027 に答える