문제

Linux 'SHA512SUM'도구와 Python Hashlib 라이브러리에서 다른 메시지 다이제스트를 받고 있습니다.

Ubuntu 8.10에 내가 얻는 것은 다음과 같습니다.

$ echo test | sha512sum
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

$ python
Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> hashlib.sha512("test").hexdigest()
'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff'

둘 다 문자열 "테스트"의 메시지 다이제스트를 계산해야합니다. 왜 내가 다른 결과를 얻고 있다고 생각합니까?

도움이 되었습니까?

해결책

차이점은 Echo가 출력에 Newline 캐릭터를 추가한다는 것입니다. echo -n 테스트를 시도하십시오 | SHA512SUM

다른 팁

echo Newline을 추가하고 있습니다.

$ python -c 'import hashlib; print hashlib.sha512("test\n").hexdigest()'
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123

그것을 피하기 위해 사용하십시오 echo -n.

다른 입력, 다른 출력. 좋아요와 비교해보십시오.

C:\junk>echo test| python -c "import sys, hashlib; x = sys.stdin.read(); print len(x), repr(x); print hashlib.sha512(x).hexdigest()"
5 'test\n'
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top