怎樣產生不重複的隨機數,密碼

來源:互聯網
上載者:User

           有的時候內部網站要對使用者過進行批量初始化密碼,在批量產生密碼的時候,由以隨機函數是以時間作為種子(ms級),大量產生的密碼過程1ms內會產生相同的密碼10個左右,(如果us級的話重複的問題可能就可以解決了,但好像個人電腦好像不行,沒有這個選項:),改造了一下,用使用者名稱的字串及時間的積作為種子,這樣產生的隨機密碼就不會重複了,而且可以自由選擇密碼類型。     // 隨機產生密碼
     public   static   string  createRandomPassWord( bool  isNumber,  bool  isLetter,  int  length, string  seed)
     ... {
        string passWord = "";
        int randomNumber = 0;
        char code;
        int i = 0;
        int seedInt = 0;
        int pip = Convert.ToInt32(DateTime.Now.Millisecond.ToString());
        if (seed.Trim().Length > 0)
        ...{
            //將字串轉化為整型
            int seedLength = seed.Length;
            char[] seedChar = new char[seedLength];
            
            for (i = 0; i < seedLength; i++)
            ...{
                seedChar[i] = Convert.ToChar(seed.Substring(i, 1));
                seedInt = seedInt + Convert.ToInt32(seedChar[i]);
            }
            pip = seedInt * pip;
        }
       
        System.Random random = new Random(pip);

        //只產生數字型密碼
        if (isNumber == true && isLetter == false)
        ...{
            for (i = 0; i < length; i++)
            ...{
                randomNumber = random.Next();
                code = (char)('0' + (char)(randomNumber % 10));
                passWord = passWord + code.ToString();
            }
        }

        //只產生字母型密碼
        else if (isNumber == false && isLetter == true)
        ...{
            for (i = 0; i < length; i++)
            ...{
                randomNumber = random.Next();
                if (randomNumber % 2 == 0)
                ...{
                    code = (char)('a' + (char)(randomNumber % 26));
                    passWord = passWord + code.ToString();
                }
                else
                ...{
                    code = (char)('A' + (char)(randomNumber % 26));
                    passWord = passWord + code.ToString();
                }
            }
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.