zoukankan      html  css  js  c++  java
  • 随机生成密码

    要求:

    1、总长8位;

    2、至少一个大写字母;

    3、至少一个小写字母;

    4、至少一个数字(0~9);

    5、至少一个特殊字符;

    using System;

    using System.Collections.Generic;

    using System.Text;

     

    /****************************************************

     * Author:quietwalk

     * Date:2011-12-02

     * Fuction:Generate a random password that consists of mixed case (at least one upper case and at least one lower case),

     * at least one special character( Symbol) ,

     * and at least one numeric, and eight characters long.

     * **************************************************/

     

    namespace UsefulClass

    {

        public class PasswordGenerator

        {

            //

            public string GeneratePassowrd()

            {

                long tick = DateTime.Now.Ticks;

                Random rdm = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));

     

                List<int> lsOrder = GetOrder();

     

                int maxNumber = 5;

                int iRemain = 4;

                int iCurrentLength = 0;

                int number = 0;

     

                List<int> lsResult = new List<int>();

     

                for (int i = 0; i < 4; i++)

                {

                    int type = lsOrder[i];//order of U,L,S,N

     

                    maxNumber = 8 - iCurrentLength - iRemain + 1;// 此次最多能取的个数 = 总长-已经取的长度-取的次数

                    if (i == 3)//最后一次全取

                    {

                        number = maxNumber;

                    }

                    else

                    {

                        number = rdm.Next(1, maxNumber);//此次实际要取的个数

                        iCurrentLength += number;//目前串的实际长度

                        iRemain = 4 - (i + 1);//剩余可取数

                    }

     

                    List<int> lsTemp = new List<int>();

                    switch (type)

                    {

                        case 1://Uper Case

                            lsTemp = GetSomeNumber('U', number);

                            break;

                        case 2://Lower Case

                            lsTemp = GetSomeNumber('L', number);

                            break;

                        case 3://Special Character

                            lsTemp = GetSomeNumber('S', number);

                            break;

                        case 4://Numeric

                            lsTemp = GetSomeNumber('N', number);

                            break;

                    }

                    foreach (int value in lsTemp)

                    {

                        lsResult.Add(value);

                    }

                }//for

     

                #region Re-Order

     

                long tick2 = DateTime.Now.Ticks;

                Random random = new Random((int)(tick2 & 0xffffffffL) | (int)(tick2 >> 32));

     

                //   Random random = new Random();

                int indexTemp = -1;

                List<int> mixOrder = new List<int>();

                for (int i = lsResult.Count - 1; i >= 0; i--)

                {

                    if (i != 0)

                    {

                        indexTemp = random.Next(i + 1);

                    }

                    else

                    {

                        indexTemp = 0;

                    }

                    mixOrder.Add(lsResult[indexTemp]);

                    lsResult.RemoveAt(indexTemp);

                }

                #endregion Re-Order


                string strResult = string.Empty;

                foreach (int value in mixOrder)

                {

                    strResult += Convert.ToChar(value);

                }

                return strResult;

            }

     

            private List<int> GetSomeNumber(char type, int number)

            {

                List<int> lsResult = new List<int>();

                long tick = DateTime.Now.Ticks;

                Random random = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));

     

                if (type == 'U')//Upper case

                {

                    #region Upper case

     

                    //List<int> lsUpperCase = new List<int>();

                    //for (int i = 65; i <= 90; i++)

                    //{

                    //    lsUpperCase.Add(i);

                    //}

                    // Random random = new Random();

     

                    int iStart = 65;//A

                    int iEnd = 90;//Z

                    for (int j = 0; j < number; j++)

                    {

                        int iResult = random.Next(iStart, iEnd + 1);

                        lsResult.Add(iResult);

                    }

     

                    #endregion

                }

                else if (type == 'L')//Lower case

                {

                    #region Lower case

     

                    //List<int> lsLowerCase = new List<int>();

                    //for (int i = 97; i <= 122; i++)

                    //{

                    //    lsLowerCase.Add(i);

                    //}

     

                    int iStart = 97;//a

                    int iEnd = 122;//z

                    for (int j = 0; j < number; j++)

                    {

                        int iResult = random.Next(iStart, iEnd + 1);

                        lsResult.Add(iResult);

                    }

     

                    #endregion

                }

                else if (type == 'N')//Number

                {

                    #region Number

     

                    //List<int> lsNumber = new List<int>();

                    //for (int i = 48; i <= 57; i++)

                    //{

                   //    lsNumber.Add(i);

                    //}

     

                    int iStart = 48;//0

                    int iEnd = 57;//9

                    for (int j = 0; j < number; j++)

                    {

                        int iResult = random.Next(iStart, iEnd + 1);

                        lsResult.Add(iResult);

                    }

     

                    #endregion

                }

                else if (type == 'S')//Special characters

                {

                    #region Sepcial Character

     

                    #region initialize the list

     

                    List<int> lsSpacialCahracters = new List<int>();

                    lsSpacialCahracters.Add(33);//!

                    lsSpacialCahracters.Add(34);//"

                    lsSpacialCahracters.Add(35);//#

                    lsSpacialCahracters.Add(36);//$

                    lsSpacialCahracters.Add(37);//%

                    lsSpacialCahracters.Add(38);//&

                    lsSpacialCahracters.Add(39);//,

                    lsSpacialCahracters.Add(40);//(

                    lsSpacialCahracters.Add(41);//)

                    lsSpacialCahracters.Add(42);//*

                    lsSpacialCahracters.Add(43);//+

                    lsSpacialCahracters.Add(44);//,

                    lsSpacialCahracters.Add(45);//-

                    lsSpacialCahracters.Add(46);//.

                    lsSpacialCahracters.Add(47);///

                    lsSpacialCahracters.Add(58);//:

                    lsSpacialCahracters.Add(59);//;

                    lsSpacialCahracters.Add(60);//<

                    lsSpacialCahracters.Add(61);//=

                    lsSpacialCahracters.Add(62);//>

                    lsSpacialCahracters.Add(63);//?

                    lsSpacialCahracters.Add(64);//@

                    lsSpacialCahracters.Add(91);//[

                    lsSpacialCahracters.Add(92);//\

                    lsSpacialCahracters.Add(93);//]

                    lsSpacialCahracters.Add(94);//^

                    lsSpacialCahracters.Add(95);//_

                    lsSpacialCahracters.Add(96);//¡é

                    lsSpacialCahracters.Add(123);//{

                    lsSpacialCahracters.Add(124);//|

                    lsSpacialCahracters.Add(125);//}

                    lsSpacialCahracters.Add(126);//~

     

                    #endregion initialize the list

     

                    int iTotalCount = lsSpacialCahracters.Count - 1;

                    //Random rdm = new Random();

                    for (int i = 0; i < number; i++)

                    {

                        int index = random.Next(iTotalCount + 1);

     

                        lsResult.Add(lsSpacialCahracters[index]);

                    }

     

                    #endregion Sepcial Character

                }

     

                return lsResult;

            }

     

            private List<int> GetOrder()

            {

                List<int> intList = new List<int>();

                intList.Add(1);//upper case

                intList.Add(2);//lower case

                intList.Add(3);//special character

                intList.Add(4);//numeric

     

                Random random = new Random();

                int index = -1;

                List<int> lsOrder = new List<int>();

     

                for (int i = intList.Count - 1; i >= 0; i--)

                {

                    if (i != 0)

                    {

                        index = random.Next(i + 1);

                    }

                    else

                    {

                        index = 0;

                    }

                    // strNumber += intList[index].ToString();

                    lsOrder.Add(intList[index]);

                    intList.RemoveAt(index);

                }

                return lsOrder;

            }

     

        }

    }

     

  • 相关阅读:
    LeetCode Count of Range Sum
    LeetCode 158. Read N Characters Given Read4 II
    LeetCode 157. Read N Characters Given Read4
    LeetCode 317. Shortest Distance from All Buildings
    LeetCode Smallest Rectangle Enclosing Black Pixels
    LeetCode 315. Count of Smaller Numbers After Self
    LeetCode 332. Reconstruct Itinerary
    LeetCode 310. Minimum Height Trees
    LeetCode 163. Missing Ranges
    LeetCode Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/quietwalk/p/2271789.html
Copyright © 2011-2022 走看看