나는 다음과 같은 기능을 사용하여 고유 레코드 ID를 만들려고 오전 : hashlib.sha256을 사용하여 고유 ID 생성; 독특한 것임이 보장 되나요?
import hashlib
from base64 import b64encode
def make_uid(salt, pepper, key):
s = b64encode(salt)
p = b64encode(pepper)
k = b64encode(key)
return hashlib.sha256(s + p + k).hexdigest()
은 pepper
는 다음과 같이 설정되는 경우 :
uuid_pepper = uuid.uuid4()
pepper = str(uuid_pepper).encode('ascii')
그리고 salt
및 key
모든 요청에 대해 동일한 값입니다.
내 질문에, 고추의 독특한 성격 때문에,이 intance에 make_uid
항상 고유 값을 반환하거나, 그것은 중복을 만들 수있는 기회가 무엇입니까?
suggested answer은 다양한 uuid 유형의 고유성에 대해 묻지 않기 때문에 다릅니다. sha256 해시가 두 개의 다른 입력 사이에 충돌을 일으킬 수 있는지 궁금합니다.
[언제 파이썬에서 uuid.uuid1()과 uuid.uuid4()를 사용해야합니까?] (http://stackoverflow.com/questions/1785503/when-should-i-use-uuid- – m0nhawk
@ m0nhawk- 내가 uuid1 또는 uuid4를 사용해야하는지 묻지 않고 있는데,이 경우 hexdigest가 항상 고유한지 물어 본다. – mwkrimson
링크를 클릭하여 읽으면 해당 질문에 대답 ** ** 답변도 표시됩니다. – m0nhawk