2012-12-07 5 views
1

ASCII 인코딩 된 문자열의 SHA256 합계를 사용하려고합니다. 우선, 나는 sha256sum 실행 시도 :sha256sum 실행 파일과 PyCrypto 라이브러리의 불일치

$ echo foo | sha256sum 
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c 

을하지만이 PyCrypto 라이브러리를 사용할 때, 나는 다른 것을 얻을 :

c5aac592460a9ac7845e341090f6f9c81f201b63e5338ee8948a6fe6830c55dc 

내가 생각 : 나는 다음을 얻을

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

을 첫 번째 것에 대해 뭔가 빠져 있습니다. 즉, 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