मैं एक पुन: प्रयोज्य फ़ंक्शन बनाना चाहता हूं जो चयनित लंबाई के प्रिंट करने योग्य ACSII वर्णों (2 से 1000+ तक) के साथ एक यादृच्छिक कुंजी उत्पन्न करेगा। मैं सोच रहा हूं कि प्रिंट करने योग्य ASCII वर्ण 33-126 होंगे। उन्हें कुंजी पूरी तरह अनूठी होने की आवश्यकता नहीं है, अगर सटीक उसी मिलीसेकंड पर उत्पन्न होता है तो अनूठा (इसलिए uniqid()
काम नहीं करेगा)।PHP के भीतर एक यादृच्छिक कुंजी उत्पन्न करने का सबसे अच्छा तरीका क्या है?
मैं chr()
और mt_rand()
का संयोजन सोच रहा हूं।
क्या यह जाने का तरीका है, या कुछ और सर्वोत्तम तरीका है?
संपादित करें:uniqid()
भी काम नहीं करेगा क्योंकि इसमें लंबाई पैरामीटर नहीं है, यह वही है जो PHP आपको देता है।
मेरा उपाय:
function GenerateKey($length = 16) {
$key = '';
for($i = 0; $i < $length; $i ++) {
$key .= chr(mt_rand(33, 126));
}
return $key;
}
वहाँ इस के साथ कोई समस्या है: यह है कि मैं क्या के साथ आया है?
अन्य संपादित करें: अन्य प्रश्नों में से अधिकांश पासवर्ड पीढ़ी के साथ सौदा करते हैं। मुझे कई प्रकार के पात्र चाहिए और मुझे 1
बनाम l
परवाह नहीं है। मैं चाहता हूं कि अधिकतम कुंजियों की अधिकतम संख्या संभव हो।
नोट: जेनरेट की गई कुंजी को क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं होना चाहिए।
रैंडम संख्या जनरेटर आम तौर पर _guarantee_ नहीं विशिष्टता करते हैं, भले ही "सटीक एक ही मिलीसेकंड पर उत्पन्न होता है।" विशिष्टता की गारंटी के लिए, आपको टकराव का पता लगाने में सक्षम होना चाहिए। – danorton
सुरक्षा के बारे में बड़ी चेतावनी जोड़ा गया, अन्यथा मुझे प्रत्येक उत्तर को कम करना होगा। चेतावनी दीजिये कि उत्तर में कुछ कार्य बाइनरी लौटते हैं, अन्य हेक्स, अन्य बेस 64 इत्यादि लौटते हैं। –