2014-07-13 5 views
0

트랜잭션에 대해 고유 한 식별자를 만들고 싶습니다.해시 (시간)의 고유성

hashlib.md5((time.time()).encode('utf-8')).hexdigest() 

프로세서 (멀티 프로세싱)의 구조에 따라 달라

는 고유성이 있는가?

+2

해싱하기 전에는 고유하지 않은 것 같습니다. 왜 시간이 필요합니까? 글로벌 카운터의 문제점은 무엇입니까? – delnan

답변

2

고유 한 식별자가 필요하면 UUIDs으로 가십시오. 타임 스탬프를 사용하여 자신의 UUID와 동등한 것을 조리하지 마십시오.

0

해시는 다른 시간 값으로 충돌 할 수 있습니다. 당신은 UUID -specifically UUID1을 사용하기를 원할 것입니다 (UUID 여러 버전의)

https://docs.python.org/2/library/uuid.html#uuid.uuid1

UUID1 입력으로 시간을 사용, 그래서만큼 UUID가 생성되는 시간이 다르므로, 당신은 다른 출력을 보장합니다.

0

우선 해시 알고리즘은 알고리즘이며 알고리즘의 정의에 따라 무언가를 성취하기 위해 '잘 정의 된'단계가되어야하므로 해시는 아키텍처에 의존하지 않으므로 아키텍처 등은 아무런 영향을 미치지 않습니다.

두 번째로 md5는 '합리적인'시간에 다른 값에 대해 동일한 md5 해시를 가질 수 있으므로 안전하지 않습니다. see wikipedia md5sum #security