我看到退出了一些像上傳的圖像名稱,會話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