2010-09-09 8 views
7

मैं खाता सक्रियण के लिए उपयोग किए जाने वाले सत्यापन कोड उत्पन्न कर रहा हूं। आपने शायद इस तरह की चीज पहले देखी है।एक यादृच्छिक स्ट्रिंग एक अच्छा सत्यापन कोड है

मेरा प्रश्न:

md5(md5(time().'helloguys'.rand(0,9999))); 

यह वास्तव में किसी भी 32 वर्ण और gj3dI3OGwo5Enf... की तरह नंबर की बस एक यादृच्छिक स्ट्रिंग पैदा करने से बेहतर है: मैं इस तरह एक जटिल फार्मूले के साथ इस कोड को उत्पन्न करने के लिए थे तो क्या होगा?

+0

पर यादृच्छिक दृश्यों उत्पन्न करने के लिए विचार कर सकते हैं आप अपने परिणाम एन्कोडिंग base32 इतना है कि यह आसान अपने उपयोगकर्ताओं को अक्षर है कि कुछ में समान लग के बीच अंतर करने के लिए है विचार करना चाह सकते फोंट्स। –

+0

यादृच्छिक मूल्य (यानी सत्यापन संख्या) उत्पन्न करने के अलावा, यदि 2 उपयोगकर्ता दुर्घटना से वही सत्यापन कोड पंजीकृत करते हैं और उत्पन्न करते हैं, तो आप ऐसे मामले को संभालना चाहेंगे। यदि विशिष्टता मायने रखती है, तो मुझे लगता है कि mt_rand() भी पर्याप्त नहीं हो सकता है। –

+0

मुझे लगता है कि सत्यापन कोड डेटाबेस में संग्रहीत किए जाएंगे - कॉलम पर एक अनूठी कुंजी डालें, और सत्यापन कोड डालने से पहले, जांचें कि यह डेटाबेस में पहले से मौजूद है या नहीं, और जब तक आपको कोई ऐसा नहीं मिलता तब तक नई कुंजी उत्पन्न करना जारी रखें पहले इस्तेमाल नहीं किया गया है। –

उत्तर

6

नहीं, हैश का उपयोग करना बेहतर नहीं है। 32 यादृच्छिक पात्रों को चुनने के लिए यह अधिक सुरक्षित (कम अनुमानित) होगा। (अंक वर्ण हैं।) एक अच्छा बीज ("क्रिप्टोग्राफिक") यादृच्छिक संख्या जनरेटर का उपयोग करें, एक अच्छा बीज (कुछ बाइट/dev/random से)। बीज के रूप में समय का उपयोग न करें।

+2

मैं लूप के साथ 32 यादृच्छिक वर्ण उत्पन्न करने की योजना बना रहा था। इस विधि के साथ क्या गलत है? और खाता सत्यापन उद्देश्यों के लिए सामान्य साइट के लिए यह ठीक नहीं होगा। (मेरा मतलब है कि अगर मैं ट्विटर या कुछ था, तो वह अभी भी उद्देश्य के लिए ठीक नहीं होगा) – dave

+0

+1 पूरी तरह से सहमत है। – rook

+0

हां, मुझे लगता है कि एक 'लूप' में एक समय में अक्षरों को चुनना ठीक होगा, जब तक कि आरएनजी अच्छा न हो, इससे कोई फर्क नहीं पड़ता। यह किसी भी साइट के लिए अच्छा होगा (कुछ और अक्षर चाहते हैं)। – erickson

1

एरिक्सन के साथ सहमत, केवल आपके * nix जो काम muich किसी भी प्रक्रिया के बेहतर आप का आविष्कार सकता है पर

pwgen -1 -s 

आदेश का उपयोग करने के लिए सलाह दे सकते हैं।

आप कुछ स्ट्रिंग उत्पन्न करने के लिए प्रोग्राम के रूप में आप

<?php  
$better_token = md5(uniqid(rand(),1)); 
?> 

पर एक नज़र लग सकते हैं चाहते हैं इस अनियमितता का बहुत अच्छा स्तर और टकराव से पहले देता है।

आप सुरक्षा की भी उच्च स्तर की जरूरत है आप http://www.random.org/

संबंधित मुद्दे