2013-03-10 2 views
0

나는 어떤 데이터의 체크섬을 계산하기 위해 sha1 alghoritm을 사용하고 싶었습니다. 파이썬에서는 hashlib 입력이 문자열로 주어졌습니다.파이썬 - 해시 이진 값

sha1을 파이썬으로 계산할 수 있습니까?하지만 원시 바이트를 입력으로 제공 할 수 있습니까?

내가 파일의 해시를 계산하고 싶다면 CI에서 openssl 라이브러리를 사용하고 일반 바이트를 전달하지만 파이썬에서는 문자열을 전달해야하므로 일부 특정 파일의 해시를 계산해야하므로 나는 두 언어로 다른 결과를 얻을 것이다.

+0

음, 파일의 텍스트를 ascii로 변환하고 'hashlib'을 통해 실행할 수 있습니다. 나는 그것이 싱글 바이트가 아닌 인코딩에 차이가 있다고 생각한다. –

+0

나는이 질문을보고 나서 좀 더 읽고 다했다 : http : //stackoverflow.com/questions/2672326/what-does-leading-x-mean-in-a-python-string-xaa 나는 struct module을 사용할 수 있다고 생각한다. 이 바이트 스트링 표현을 빌드하고 hashlib에 전달하십시오. 내가 틀렸다면 나를 바로 잡으십시오. – Andna

+0

해시 할 파일에 멀티 바이트 문자셋을 사용하고 있다는 것을 확실히 알지 못한다면 C와 같은 해싱 함수로 넘길 수 있습니다. –

답변

1

Python 2.x에서 str 개체는 임의의 바이트 스트림이 될 수 있습니다. 예, hashlib의 데이터를 str으로 전달하면됩니다.

>>> import hashlib 
>>> "this is binary \0\1\2" 
'this is binary \x00\x01\x02' 
>>> hashlib.sha1("this is binary \0\1\2").hexdigest() 
'17c27af39d476f662be60be7f25c8d3873041bb3' 
+0

감사합니다. 이것은 struct 모듈을 사용하여 예를 들어 4 바이트 정수의 해시를 계산할 수도 있습니다. – Andna

+0

@Andna 당신도 오래된 C 해싱 라이브러리로 그렇게 할 수 있습니다. 왜 당신이이 모듈을 위해'struct' 모듈을 사용하는지 확신 할 수 없습니다. 당신은 정교 할 수 있습니까? –

+0

파이썬에서 내가하고 싶은 것을 묻고 있습니까? – Andna