我要生成一个随机的密码,用于windows ad域中的帐号密码,密码要求如下:
不能包含用户的帐户名,不能包含用户姓名中超过两个连续字符的部分
至少有6个字符长
最大有22个字符长
包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、#、%)
在更改或创建密码时执行复杂性要求。请大家帮我写个类。

解决方案 »

  1.   

    只写了一个方法:
      public string getreadrem(string userchar )
            {
                Random rd = new Random();
             
                string newchar=null;
                int i=0;
                int x=0;
                char[] rdchar = new char[] { '@', '`', '!', 'A', 'a', '"', '4', 'T',  't', 
                                            'B', 'b', '#', 'C', 'c', '$',  '5',  'U',  'u', 
                                            'D', 'd', '%',  'E',  'e', '&',  'F',  'f',
                                             '\'', 'G',  'g','(',  'H', 'h',')',  'I',  'i',
                                              '*',  'J', 'j', '+',  'K',  'k', ',',  'L',  'l',
                                               '-', 'M',  'm','.',  'N', 'n',  '/',  'O',  'o',
                                               '0', 'P',  'p',  '1', 'Q',  'q', '2',  'R', 'r', 
                                            '3', 'S',  's',  '6',  'V',  'v', '7',  'W',  'w',   '8',  'X',  'x', 
                                                '9',  'Y',  'y',  ':',  'Z', 'z',   ';',  '[',  '{',  '<', 
                                                '\\','|', '=', ']',  '}',  '-',  '>',  '^', '~',  '?',  '_'   };
                
                i=rd.Next(7,23);//得到密码长度
                
                for(int j=0;j<i;j++)
                {
               x= rd.Next(0, rdchar.Length);//得到字符下标.           newchar += rdchar[x];//得到新的字符
                 int z=   userchar.IndexOf(newchar);
                if(z>0) //判断字符里有没有随机生成字符.
                {
                       x=rd.Next(newchar.Length,rdchar.Length);
                       newchar += rdchar[x];
                }
                }
                return newchar.ToString() ;
            }