Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अद्वितीय यादृच्छिक अल्फ़ान्यूमेरिक वर्ण उत्पन्न करें जो 7 वर्ण लंबे हों

आम तौर पर अद्वितीय और यादृच्छिक दोनों तत्वों के साथ अनुक्रम उत्पन्न करना संभव नहीं है:स्पष्ट रूप से अद्वितीय होने के लिए एल्गोरिदम को अनुक्रम में पहले से उत्पन्न तत्वों को ध्यान में रखना होगा, इसलिए अगले वाले वास्तव में यादृच्छिक नहीं होंगे।

इसलिए आपकी सबसे अच्छी शर्त यह होगी कि आप टकरावों का पता लगाएं और फिर से प्रयास करें (जो आपके विशेष मामले में बहुत महंगा हो सकता है)।

यदि आप केवल 7 वर्णों तक सीमित हैं, तो आप ऊपर इतना कुछ नहीं कर सकते:

$allowed_chars = 'abcdefghijklmnopqrstuvwxz';
$allowed_count = strlen($allowed_chars);
$password = null;
$password_length = 7;

while($password === null || already_exists($password)) {
    $password = '';
    for($i = 0; $i < $password_length; ++$i) {
        $password .= $allowed_chars{mt_rand(0, $allowed_count - 1)};
    }
}

यह अंततः आपको एक नया पासवर्ड देना चाहिए।

हालांकि, इसी तरह के मामलों में मैंने सामना किया है, मैं आमतौर पर एक बड़ा पासवर्ड आकार चुनता हूं जो एक लोकप्रिय हैश फ़ंक्शन के हेक्स प्रतिनिधित्व का आकार भी होता है (उदाहरण के लिए md5 ) तब आप इसे अपने लिए आसान और कम त्रुटि प्रवण बना सकते हैं:

$password = time(); // even better if you have some other "random" input to use here

do {
    $password = md5(time().$password);
}
while (already_exists($password));

इसका अतिरिक्त लाभ यह भी है कि अनुक्रम स्थान बड़ा है, इसलिए कम टक्कर होगी। आप भविष्य में उत्पन्न होने वाले पासवर्ड की अपेक्षित संख्या के अनुसार हैश फ़ंक्शन का आकार चुन सकते हैं ताकि कम टकराव की संभावना "गारंटी" हो और इस प्रकार संभावित रूप से महंगे already_exists को कम कॉल करें। समारोह।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django model.py परिपत्र विदेशी कुंजी

  2. मैसकल बाएं दाएं तालिका में शर्त के साथ जुड़ें

  3. श्रेणी पदानुक्रम (PHP/MySQL)

  4. mysql sproc में तालिका नाम के लिए एक चर का उपयोग करें

  5. Php में स्थानीयकरण के लिए .po/.mo फ़ाइलों को कैसे चलाएं या लोड करें