using System; using System.Security.Cryptography; namespace CallCenter.Utility { public class RandString { #region 随机字符串,随机数 private static readonly string _LowerChar = "abcdefghijklmnopqrstuvwxyz"; private static readonly string _UpperChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static readonly string _NumberChar = "0123456789"; #region 获取种子 /**/ /// /// 使用RNGCryptoServiceProvider 做种,可以在一秒内产生的随机数重复率非常 /// 的低,对于以往使用时间做种的方法是个升级 /// /// #endregion public static int GetNewSeed() { var rndBytes = new byte[4]; var rng = new RNGCryptoServiceProvider(); rng.GetBytes(rndBytes); return BitConverter.ToInt32(rndBytes, 0); } #region 取得指定范围内的数字随几数 /**/ /// /// 取得指定范围内的随几数 /// /// 下限数 /// 上限数 /// int #endregion public static int GetRandomNumber(int startNumber, int endNumber) { var objRandom = new Random(GetNewSeed()); int r = objRandom.Next(startNumber, endNumber); return r; } #region 获取指定 ASCII 范围内的随机字符串 /**/ /// /// 获取指定 ASCII 范围内的随机字符串 /// /// 结果字符串长度 /// 开始的ASCII值 如(33-125)中的 33 /// 结束的ASCII值 如(33-125)中的 125 /// #endregion public static string GetRandomStringByASCII(int resultLength, int startNumber, int endNumber) { var objRandom = new Random(GetNewSeed()); string result = null; for (int i = 0; i < resultLength; i++) { result += (char)objRandom.Next(startNumber, endNumber); } return result; } #region 从指定字符串中抽取指定长度的随机字符串 /**/ /// /// 从指定字符串中抽取指定长度的随机字符串 /// /// 源字符串 /// 待获取随机字符串长度 /// #endregion private static string GetRandomString(string source, int resultLength) { var objRandom = new Random(GetNewSeed()); string result = null; for (int i = 0; i < resultLength; i++) { result += source.Substring(objRandom.Next(0, source.Length), 1); } return result; } #region 获取指定长度随机的数字字符串 /**/ /// /// 获取指定长度随机的数字字符串 /// /// 待获取随机字符串长度 /// #endregion public static string GetRandomNumberString(int resultLength) { return GetRandomString(_NumberChar, resultLength); } #region 获取指定长度随机的字母字符串(包含大小写字母) /**/ /// /// 获取指定长度随机的字母字符串(包含大小写字母) /// /// 待获取随机字符串长度 /// #endregion public static string GetRandomLetterString(int resultLength) { return GetRandomString(_LowerChar + _UpperChar, resultLength); } #region 获取指定长度随机的字母+数字混和字符串(包含大小写字母) /**/ /// /// 获取指定长度随机的字母+数字混和字符串(包含大小写字母) /// /// 待获取随机字符串长度 /// #endregion public static string GetRandomMixString(int resultLength) { return GetRandomString(_LowerChar + _UpperChar + _NumberChar, resultLength); } #endregion } }