我嘗試使用下面的函數創建一個獨特的記錄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
是爲每個請求的值相同。
我的問題是,由於辣椒的獨特性質,這個實例中的make_uid
總會返回一個唯一值,或者有可能會創建一個重複的?
suggested answer是不同的,因爲我沒有問及各種uuid類型的獨特性,我想知道是否所有可能的sha256散列創建兩個不同的輸入之間的衝突。
可能的重複[什麼時候應該使用uuid.uuid1()與uuid.uuid4()在python?](http://stackoverflow.com/questions/1785503/when-should-i-use-uuid- uuid1-vs-uuid -uuid4-in-python) – m0nhawk
@ m0nhawk-我不是問我應該使用uuid1還是uuid4,我問我的hexdigest在這個例子中是否總是唯一的。 – mwkrimson
如果你在鏈接上閱讀,那麼你會發現接受的答案**也回答你的問題。 – m0nhawk