生成密码
来源:互联网 发布:淘宝客成交有多少佣金 编辑:程序博客网 时间:2024/04/29 23:59
using System;namespace LBC.RandomString{ /// <summary> /// 可以生成由数字和字母组成,且字符都不相同的密码字符的类 /// </summary> public class RandomString : ICreateString { /// <summary> /// 组成密码的字符 /// </summary> string Chars = "0987654321qwertyuiopasdfghjklzxcvbnmMNBVCXZASDFGHJKLQWERTYUIOP"; #region ICreateString 成员 /// <summary> /// 生成密码,有数字和字母组成,且字符都不相同 /// </summary> /// <param name="Length">生成密码长度</param> /// <returns></returns> string ICreateString.CreateString(int Length) { if (Length >= Chars.Length) throw new ArgumentException("Length要必须小于50"); //是否完成 bool IsDone = false; string password = string.Empty;//返回的密码 Random ran = new Random((int)DateTime.Now.Ticks); do { int Start = 0;//开始 int End = Chars.Length;//结束 password = string.Empty; int CharCount = 0;//字符数量,用来验证密码强度 int NumberCount = 0;//数字数量,用来验证密码强度 for (int i = 0; i < Length; i++) { int index = ran.Next(Start, End);//获取字符索引 //获取选择的区域,如果上次在前半部分则下次在后半部分 if (index >= Chars.Length/2) { Start = 0; End = Chars.Length / 2; } else { Start = Chars.Length / 2; End = Chars.Length; } char ch = Chars[index];//获取指定字符 int Count = 0;//字符出现的次数,只能出现一次 for (int j = 0; j < password.Length; j++) { if (password[j] == ch) { Count++; break; } } if (Count > 0)//如果有出现过,循环变量递减,即重新获取字符 { --i; } else//否则添加到密码字符中 { password += ch.ToString(); //判断数字出现的次数 if (ch <= '9' && ch >= '0') { NumberCount++; } //判断字母出现的次数 else if (ch <= 'z' && ch >= 'A') { CharCount++; } } } IsDone = (CharCount >= 2 && NumberCount >= 2);//如果密码字符中字母和数字都出现两次或两次以上则完成 } while (!IsDone); return password; } #endregion /// <summary> /// 生成密码,有数字和字母组成,密码强度低,但是生成速度快 ///要生成密码强度高的字符串请使用ICreateString.CreateString方法 /// </summary> /// <param name="Length">生成密码长度</param> /// <returns></returns> public string CreateString(int Length) { string str_Number = string.Empty; Random theRandomNumber = new Random((int)DateTime.Now.Ticks); for (int int_index = 0; int_index < Length; int_index++) { str_Number += Chars[theRandomNumber.Next(0, Chars.Length)].ToString(); } return str_Number; } }}using System;namespace LBC.RandomString{ /// <summary> /// IMackPassword接口,提供一个产生随机字符串的方法 /// </summary> public interface ICreateString { /// <summary> /// 产生随机字符串 /// </summary> /// <param name="Length">随机字符串长度</param> /// <returns></returns> string CreateString(int Length); }}