मैं एक साधारण अल्पकालिक आरक्षण प्रणाली बनाने के लिए देख रहा हूँ, और मैं पुष्टिकरण संख्या किएक अद्वितीय अक्षरांकीय 10-चरित्र स्ट्रिंग
- अद्वितीय
- यादृच्छिक दिखने हैं जेनरेट करना चाहते हैं बनाना
- अक्षरांकीय
- कम-ish, कम से कम की तुलना में बहुत कम 32 चरित्र के लंबे तार SHA1 द्वारा दिया
मैं केवल देख रहा हूँ ~ 500 आरक्षण होने के लिए, इसलिए संकुचन की उच्च संभावना की कल्पना नहीं करता है।
एक विचार जो मैंने किया था वह दिनांक-समय टिकट और उपयोगकर्ता नाम के आधार पर एक sha1 हैश उत्पन्न करता है, फिर इसे अपने पहले 10 वर्णों में छोटा कर देता है। क्या ऐसा कुछ ~ 500 आरक्षण संसाधित करने के प्रयोजनों के लिए पर्याप्त रूप से अद्वितीय होगा?
sub get_random_name() { my @chars=('a'..'z','A'..'Z'); my $random_string;foreach (1..22) { # rand @chars will generate a random # number between 0 and scalar @chars $random_string .= $chars[rand @chars]; } return $random_string . "-" . time(); }
मुझे याद नहीं कब तक समय() हिस्सा है, तो आप अपने लंबाई फिट करने के लिए संख्या को समायोजित करने के लिए हो सकता है:
मैं आधार 32 के बजाय सुझाव दे सकता है? अगर किसी भी इंसान को इस अनुक्रम को प्रतिलिपि बनाना होगा, तो क्रॉकफोर्ड का बेस 32 बहुत बेहतर विकल्प है http://crockford.com/wrmg/base32.html – Breton