मैं अपलोड की गई छवि नाम, सत्र आईडी, एट अल जैसी चीजों के लिए अद्वितीय स्ट्रिंग पीढ़ी के कुछ कार्यान्वयन को छोड़ देता हूं, और उनमें से कई SHA1 या अन्य जैसे हैंश का उपयोग करते हैं।पायथन - अद्वितीय तारों के लिए 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()
एस के संयोजन से अपनी स्ट्रिंग बनाकर आधा बाधा भी कर सकते हैं।
तो, इसके साथ, लोग अनियमित तारों के लिए यादृच्छिक() और अन्य सामान पर समय क्यों व्यतीत करते हैं? क्या यूयूआईडी के बारे में कोई महत्वपूर्ण सुरक्षा समस्या है या अन्य?
बीटीडब्ल्यू, यूयूआईडी की लंबाई दोगुना करने से संभव मूल्यों की संख्या बढ़ जाएगी, न केवल डबल। –