自己写的一个随机生成密码的类,主要用于对于MD5或其它非对称加密的数据重设密码使用.这样避免了随机生成的单一和简单的缺点. namespace WyRandom { /// <summary> /// WyRandom 的摘要说明。 /// 编写时间:2005-06-25 /// 编写 人:房客 /// </summary> /// public class Rnd { private int intCount = 7; //生成位数 private int intTypeCount = 3; //生成类型的数目 public Rnd() { // // TODO: 在此处添加构造函数逻辑 // } public Rnd( int Count ) { this.intCount = Count; } public Rnd( int Count, int TypeCount ) { this.intCount = Count; this.intTypeCount = TypeCount; } /// <summary> /// 根据实例化返回随机生成的字符串 /// </summary> /// <returns>返回随机生成的字符串</returns> public string GetRandomNumber() { string strOut = GetRandomStringFromIntArray(intArray( this.intCount,this.intTypeCount )); return strOut; } /// <summary> /// 返回总数为生成位数的数组 /// </summary> /// <param name="intCount">要生成的位数</param> /// <param name="intTypeCount">生成类型的数目</param> /// <returns>输出总数为生成位数的数组</returns> private int[] intArray( int intCount ,int intTypeCount ) { int[] intArr = new int[intTypeCount]; int intTemp = 0; int intTempNumber = 0; System.Random ranNumber = new System.Random( System.DateTime.Now.Millisecond ); for ( int i = 0; i < intTypeCount-1; i++ ) { do { intTempNumber = ranNumber.Next( 0,intCount ); } while( intTemp + intTempNumber > intCount ); intTemp += intTempNumber; intArr[i] = intTempNumber; } intArr[intTypeCount-1] = intCount-intTemp; return intArr; } /// <summary> /// 由序列数组生成字符串 /// </summary> /// <param name="intArrayNumber">由intArray生成的数据</param> /// <returns>返加字符串</returns> private string GetRandomStringFromIntArray( int[] intArrayNumber ) { System.Random CharRand = new Random( System.DateTime.Now.Millisecond ); string strTemp = ""; for( int i=0; i<intArrayNumber.Length; i++ ) { for ( int j=0 ;j<intArrayNumber[i] ; j++) { if ( i == 0) strTemp += Convert.ToChar(CharRand.Next(65,90)).ToString(); //A-Z if ( i ==1 ) strTemp += Convert.ToChar(CharRand.Next(97,122)).ToString(); //a-z if ( i==2 ) strTemp += Convert.ToChar(CharRand.Next(49,57)).ToString(); //1-9 没用"0"是为了避免和字母O混淆 } } return strTemp; } } } |
|
来自: alone_star > 《ASP.NET》