濮阳12345API

RandString.cs 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using System;
  2. using System.Security.Cryptography;
  3. namespace CallCenter.Utility
  4. {
  5. public class RandString
  6. {
  7. #region 随机字符串,随机数
  8. private static readonly string _LowerChar = "abcdefghijklmnopqrstuvwxyz";
  9. private static readonly string _UpperChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  10. private static readonly string _NumberChar = "0123456789";
  11. #region 获取种子
  12. /**/
  13. /// <summary>
  14. /// 使用RNGCryptoServiceProvider 做种,可以在一秒内产生的随机数重复率非常
  15. /// 的低,对于以往使用时间做种的方法是个升级
  16. /// </summary>
  17. /// <returns></returns>
  18. #endregion
  19. public static int GetNewSeed()
  20. {
  21. var rndBytes = new byte[4];
  22. var rng = new RNGCryptoServiceProvider();
  23. rng.GetBytes(rndBytes);
  24. return BitConverter.ToInt32(rndBytes, 0);
  25. }
  26. #region 取得指定范围内的数字随几数
  27. /**/
  28. /// <summary>
  29. /// 取得指定范围内的随几数
  30. /// </summary>
  31. /// <param name="startNumber">下限数</param>
  32. /// <param name="endNumber">上限数</param>
  33. /// <returns>int</returns>
  34. #endregion
  35. public static int GetRandomNumber(int startNumber, int endNumber)
  36. {
  37. var objRandom = new Random(GetNewSeed());
  38. int r = objRandom.Next(startNumber, endNumber);
  39. return r;
  40. }
  41. #region 获取指定 ASCII 范围内的随机字符串
  42. /**/
  43. /// <summary>
  44. /// 获取指定 ASCII 范围内的随机字符串
  45. /// </summary>
  46. /// <param name="resultLength">结果字符串长度</param>
  47. /// <param name="startNumber"> 开始的ASCII值 如(33-125)中的 33</param>
  48. /// <param name="endNumber"> 结束的ASCII值 如(33-125)中的 125</param>
  49. /// <returns></returns>
  50. #endregion
  51. public static string GetRandomStringByASCII(int resultLength, int startNumber, int endNumber)
  52. {
  53. var objRandom = new Random(GetNewSeed());
  54. string result = null;
  55. for (int i = 0; i < resultLength; i++)
  56. {
  57. result += (char)objRandom.Next(startNumber, endNumber);
  58. }
  59. return result;
  60. }
  61. #region 从指定字符串中抽取指定长度的随机字符串
  62. /**/
  63. /// <summary>
  64. /// 从指定字符串中抽取指定长度的随机字符串
  65. /// </summary>
  66. /// <param name="source">源字符串</param>
  67. /// <param name="resultLength">待获取随机字符串长度</param>
  68. /// <returns></returns>
  69. #endregion
  70. private static string GetRandomString(string source, int resultLength)
  71. {
  72. var objRandom = new Random(GetNewSeed());
  73. string result = null;
  74. for (int i = 0; i < resultLength; i++)
  75. {
  76. result += source.Substring(objRandom.Next(0, source.Length), 1);
  77. }
  78. return result;
  79. }
  80. #region 获取指定长度随机的数字字符串
  81. /**/
  82. /// <summary>
  83. /// 获取指定长度随机的数字字符串
  84. /// </summary>
  85. /// <param name="resultLength">待获取随机字符串长度</param>
  86. /// <returns></returns>
  87. #endregion
  88. public static string GetRandomNumberString(int resultLength)
  89. {
  90. return GetRandomString(_NumberChar, resultLength);
  91. }
  92. #region 获取指定长度随机的字母字符串(包含大小写字母)
  93. /**/
  94. /// <summary>
  95. /// 获取指定长度随机的字母字符串(包含大小写字母)
  96. /// </summary>
  97. /// <param name="resultLength">待获取随机字符串长度</param>
  98. /// <returns></returns>
  99. #endregion
  100. public static string GetRandomLetterString(int resultLength)
  101. {
  102. return GetRandomString(_LowerChar + _UpperChar, resultLength);
  103. }
  104. #region 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
  105. /**/
  106. /// <summary>
  107. /// 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
  108. /// </summary>
  109. /// <param name="resultLength">待获取随机字符串长度</param>
  110. /// <returns></returns>
  111. #endregion
  112. public static string GetRandomMixString(int resultLength)
  113. {
  114. return GetRandomString(_LowerChar + _UpperChar + _NumberChar, resultLength);
  115. }
  116. #endregion
  117. }
  118. }