C# 代码
- using System;
- using System.Security.Cryptography;
- namespace YNIT.Components
- {
- /// <summary>
- /// 生成随机字符串的密封类,不能被继承
- /// </summary>
- public sealed class RandomStr
- {
- private static readonly int defaultLength = 8;
- private static int GetNewSeed()
- {
- byte[] rndBytes = new byte[4];
- RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
- rng.GetBytes(rndBytes);
- return BitConverter.ToInt32(rndBytes,0);
- }
- private static string BuildRndCodeAll(int strLen)
- {
- System.Random RandomObj = new System.Random(GetNewSeed());
- string buildRndCodeReturn = null;
- for(int i=0; i<strLen; i++)
- {
- buildRndCodeReturn += (char)RandomObj.Next(33,125);
- }
- return buildRndCodeReturn;
- }
- #region 输出随机字符串
- /// <summary>
- /// 输出长度为8的随机字符串
- /// </summary>
- /// <returns>长度为8的随机字符串</returns>
- public static string GetRndStrOfAll()
- {
- return BuildRndCodeAll(defaultLength);
- }
- /// <summary>
- /// 输出指定长度的随机字符串
- /// </summary>
- /// <param name="LenOf">长度</param>
- /// <returns>指定长度的随机字符串</returns>
- public static string GetRndStrOfAll(int LenOf)
- {
- return BuildRndCodeAll(LenOf);
- }
- #endregion
- private static string sCharLow = "abcdefghijklmnopqrstuvwxyz";
- private static string sCharUpp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- private static string sNumber = "0123456789";
- private static string BuildRndCodeOnly(string StrOf,int strLen)
- {
- System.Random RandomObj = new System.Random(GetNewSeed());
- string buildRndCodeReturn = null;
- for(int i=0; i<strLen; i++)
- {
- buildRndCodeReturn += StrOf.Substring(RandomObj.Next(0,StrOf.Length-1),1);
- }
- return buildRndCodeReturn;
- }
- #region 输出指定范围随机字符串
- /// <summary>
- /// 输出长度为8的小写字母加数字的字符串
- /// </summary>
- /// <returns>长度为8的小写字母加数字的字符串</returns>
- public static string GetRndStrOnlyFor()
- {
- return BuildRndCodeOnly(sCharLow + sNumber,defaultLength);
- }
- /// <summary>
- /// 输出指定长度的小写字母加数字的字符串
- /// </summary>
- /// <param name="LenOf">长度</param>
- /// <returns>指定长度的小写字母加数字的字符串</returns>
- public static string GetRndStrOnlyFor(int LenOf)
- {
- return BuildRndCodeOnly(sCharLow + sNumber,LenOf);
- }
- /// <summary>
- /// 输出长度为8的指定字符串
- /// </summary>
- /// <param name="bUseUpper">是否含有大写字母</param>
- /// <param name="bUseNumber">是否含有数字</param>
- /// <returns>长度为8的指定字符串</returns>
- public static string GetRndStrOnlyFor(bool bUseUpper,bool bUseNumber)
- {
- string strTmp = sCharLow;
- if (bUseUpper) strTmp += sCharUpp;
- if (bUseNumber) strTmp += sNumber;
- return BuildRndCodeOnly(strTmp,defaultLength);
- }
- /// <summary>
- /// 输出指定长度的指定字符串
- /// </summary>
- /// <param name="LenOf">长度</param>
- /// <param name="bUseUpper">是否含有大写字母</param>
- /// <param name="bUseNumber">是否含有数字</param>
- /// <returns>指定长度的指定字符串</returns>
- public static string GetRndStrOnlyFor(int LenOf,bool bUseUpper,bool bUseNumber)
- {
- string strTmp = sCharLow;
- if (bUseUpper) strTmp += sCharUpp;
- if (bUseNumber) strTmp += sNumber;
- return BuildRndCodeOnly(strTmp,LenOf);
- }
- #endregion
- }