我尝试使用下面的函数创建一个独特的记录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