2016-11-03 2 views
1

파이썬 3을 사용하여 정수의 해시를 계산해야합니다. 다음보다 깨끗하고 효율적인 솔루션이 있습니까?파이썬 3에서 정수의 MD5 해시 계산하기?

>>> import hashlib 
>>> N = 123 
>>> hashlib.md5(str(N).encode("ascii")).hexdigest() 
'202cb962ac59075b964b07152d234b70' 

그런 다음, 유니 코드 문자열로 변환 할 바이트 배열로 디코딩하는 이상한 것 같다.

답변

1

MD5와 같은 암호화 해시는 바이트에만 적용 할 수 있습니다. 숫자를 바이트로 인코딩하는 더 효율적인 방법이 있지만 여전히 계약을 따라야합니다.

>>> hashlib.md5(123 .to_bytes(4, 'big')).hexdigest() 
'a7e0b18d0d4516eb0ea63371704a500c' 
+0

좋아요, 감사 이그나시오. 나는 int에 대한 메서드를 호출 할 수 있는지 몰랐다. 혹시 파이썬 2에서 이것을하는 법을 알고 있습니까? – MiniQuark

+0

파이썬 2.x의 경우,'struct'을 사용하여 바이트를 바이트로 묶어야합니다. –

+0

Yikes. 파이썬 3을 선호하는 또 하나의 이유. 다시 한번 감사드립니다. – MiniQuark

0

이그나시오의 대답은 완벽하지만, 경우에 당신은 모두 당신이 NumPy와 설치 한 경우, 다음이 잘 작동하고 파이썬 2와 파이썬 3, 함께 작동하도록 코드가 필요합니다

>>> import numpy as np 
>>> import hashlib.md5 
>>> N = 123 
>>> hashlib.md5(np.int64(N)).hexdigest() 
'f18b8dbefe02a0efce281deb55a209cd'