| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 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 获取种子
- /**/
- /// <summary>
- /// 使用RNGCryptoServiceProvider 做种,可以在一秒内产生的随机数重复率非常
- /// 的低,对于以往使用时间做种的方法是个升级
- /// </summary>
- /// <returns></returns>
- #endregion
- public static int GetNewSeed()
- {
- var rndBytes = new byte[4];
- var rng = new RNGCryptoServiceProvider();
- rng.GetBytes(rndBytes);
- return BitConverter.ToInt32(rndBytes, 0);
- }
- #region 取得指定范围内的数字随几数
- /**/
- /// <summary>
- /// 取得指定范围内的随几数
- /// </summary>
- /// <param name="startNumber">下限数</param>
- /// <param name="endNumber">上限数</param>
- /// <returns>int</returns>
- #endregion
- public static int GetRandomNumber(int startNumber, int endNumber)
- {
- var objRandom = new Random(GetNewSeed());
- int r = objRandom.Next(startNumber, endNumber);
- return r;
- }
- #region 获取指定 ASCII 范围内的随机字符串
- /**/
- /// <summary>
- /// 获取指定 ASCII 范围内的随机字符串
- /// </summary>
- /// <param name="resultLength">结果字符串长度</param>
- /// <param name="startNumber"> 开始的ASCII值 如(33-125)中的 33</param>
- /// <param name="endNumber"> 结束的ASCII值 如(33-125)中的 125</param>
- /// <returns></returns>
- #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 从指定字符串中抽取指定长度的随机字符串
- /**/
- /// <summary>
- /// 从指定字符串中抽取指定长度的随机字符串
- /// </summary>
- /// <param name="source">源字符串</param>
- /// <param name="resultLength">待获取随机字符串长度</param>
- /// <returns></returns>
- #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 获取指定长度随机的数字字符串
- /**/
- /// <summary>
- /// 获取指定长度随机的数字字符串
- /// </summary>
- /// <param name="resultLength">待获取随机字符串长度</param>
- /// <returns></returns>
- #endregion
- public static string GetRandomNumberString(int resultLength)
- {
- return GetRandomString(_NumberChar, resultLength);
- }
- #region 获取指定长度随机的字母字符串(包含大小写字母)
- /**/
- /// <summary>
- /// 获取指定长度随机的字母字符串(包含大小写字母)
- /// </summary>
- /// <param name="resultLength">待获取随机字符串长度</param>
- /// <returns></returns>
- #endregion
- public static string GetRandomLetterString(int resultLength)
- {
- return GetRandomString(_LowerChar + _UpperChar, resultLength);
- }
- #region 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
- /**/
- /// <summary>
- /// 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
- /// </summary>
- /// <param name="resultLength">待获取随机字符串长度</param>
- /// <returns></returns>
- #endregion
- public static string GetRandomMixString(int resultLength)
- {
- return GetRandomString(_LowerChar + _UpperChar + _NumberChar, resultLength);
- }
- #endregion
- }
- }
|