讲解“C#生成随机字符串的实例”的完整攻略包含以下几个步骤:
-
引入命名空间:首先需要引入
System.Security.Cryptography
命名空间,这个命名空间提供了RNGCryptoServiceProvider
类,可以生成真正的随机数。 -
创建
RNGCryptoServiceProvider
类对象:创建一个RNGCryptoServiceProvider
类对象,用于生成随机数。 -
生成随机数:调用
RNGCryptoServiceProvider
类的GetBytes()
方法,传入一个字节数组,该方法会把生成的随机数数据填充到这个字节数组中。 -
转换成字符串:使用
Convert.ToBase64String()
方法把字节数组转换成字符串。
下面是一个示例代码,生成指定长度的随机字符串:
using System.Security.Cryptography;
public static string GenerateRandomString(int length)
{
// 生成随机数
byte[] randomBytes = new byte[length];
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(randomBytes);
}
// 转换成字符串
return Convert.ToBase64String(randomBytes);
}
上述代码通过 using
语句创建 RNGCryptoServiceProvider
对象,然后调用 GetBytes()
方法生成指定长度的随机数,并把这个随机数转换成字符串返回。
另一个示例是生成指定长度的随机数字或字母组合,如下所示:
using System.Security.Cryptography;
using System.Text;
public static string GenerateRandomAlphaNumeric(int length)
{
// 可用字符集合
const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
// 生成随机数
StringBuilder sb = new StringBuilder();
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] uintBuffer = new byte[sizeof(uint)];
int charsPerUint = valid.Length / sizeof(uint);
int remainder = valid.Length % sizeof(uint);
for (int i = 0; i < length; i++)
{
if ((i % charsPerUint) == 0)
{
rng.GetBytes(uintBuffer);
}
uint num = BitConverter.ToUInt32(uintBuffer, i % charsPerUint * sizeof(uint));
char c = valid[(int)(num % remainder)];
sb.Append(c);
}
}
// 返回随机字符串
return sb.ToString();
}
上述代码使用 StringBuilder
对象依次生成指定长度的随机字符串。在生成每一个随机字符的时候,使用 RNGCryptoServiceProvider
类生成一个 UInt32
整数,取模得到一个可用字符的索引位置,然后添加到字符串中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#生成随机字符串的实例 - Python技术站