2016-06-10 2 views
0

체크섬을 얻기 위해 비트 코닉 개인 키를 해시하려고하는데, 파이썬 (hashlib + pycrypto)의 두 라이브러리가 (단지 1 해시 후) 동일한 잘못된 결과를 반환합니다.잘못된 해시 값을 반환하는 Sha256?

리눅스 터미널에서, 나는 선으로 올바른 해시 결과를 얻을 : 나는 '

5d6dce0f36a50abe51ee435ac11dac05f7879c1cd1ca5bc7aae706e5a3776d4a 

:

echo -n 8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4 | xxd -r -p | sha256sum -b 
result: cd358f378809b3043ded3782d849fbad70f92a2dadefafd985d9aef443752e57 

그러나 hashlib, pycrypto, 온라인 SHA2 해시 도구는 값을 반환 왜 다른 값을 반환하는지 모르겠습니다.

여기에서 생성 된 두 개의 WIF 키가 있습니다. 맨 위는 명령 행 기능을 사용하고 두 번째는 파이썬을 사용합니다. 두 번째 것은 유효하지 않습니다 (지갑 소프트웨어에서 허용하지 않음).

5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGtxZf2V 
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGvDc8hm 
+3

파이썬 라이브러리가 잘못된 값을 반환하지 않습니다. 코드를 표시하면 문제가 발생하는 이유를 알려줄 수 있습니다. (나는 그것이 Python 2의 공통 유니 코드/문자열 혼란과 관련이 있다고 생각할 것이다.) –

+0

문제는'xxd -r -p' 때문이라고 생각합니다. 'echo -n 8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4 | sha256sum -b' 또한 잘못된 해시 값 *을 얻습니다. 그러나 나는'xxd'가 무엇을하는지 알지 못하지만'xxd'의 결과를 파이썬'sha256' 또는 문자열에만 전달 했습니까? –

+1

@KevinGuan'xxd -r -p'는 "reverse hexdump"입니다. 즉, 16 진수를 다시 2 진수로 변환해야합니다. – melpomene

답변

2
import hashlib 

print(
    hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4").hexdigest() 
) 

print(
    hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4".decode("hex")).hexdigest() 
) 

공지 사항의 차이는 :

첫 번째 코드는 16 진수 문자열을 해시.

두 번째 바이트는 16 진수 디코드에 의해 반환 된 바이트 문자열을 해시합니다.