我看到退出了一些像上传的图像名称,会话ID等等的东西的唯一字符串生成的实现,并且其中许多实现了诸如SHA1之类的散列的使用。Python - 为什么使用除uuid4()以外的其他任何字符作为唯一字符串?
我不质疑使用这种自定义方法的合法性,而只是原因。如果我想要一个唯一的字符串,我只是这样说:
>>> import uuid
>>> uuid.uuid4()
UUID('07033084-5cfd-4812-90a4-e4d24ffb6e3d')
而我完成了它。我是不是很信任之前,我在读的UUID,所以我这样做:
>>> import uuid
>>> s = set()
>>> for i in range(5000000): # That's 5 million!
>>> s.add(str(uuid.uuid4()))
...
...
>>> len(s)
5000000
没有一个中继器(我不希望一个正在考虑的可能性是一样1.108e + 50,但它是安慰看到它在行动)。你可以通过组合2 uuid4()
s来制作字符串,甚至可以减少一半的可能性。
那么,为什么人们花时间在随机()和其他东西的独特的字符串等?是否有关于uuid的重要安全问题或其他问题?
顺便说一句,加倍uuid的长度将平方可能值的数量,而不是双倍。 – 2010-03-12 18:49:27