📅  最后修改于: 2023-12-03 15:40:52.198000             🧑  作者: Mango
在开发过程中,有时需要生成随机字符串用于密码、验证码等场景。在 C# 中,可以使用 Random
类或 Guid
类来生成随机字符串。
public static string GenerateRandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var random = new Random();
var result = new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
return result;
}
以上函数会生成一个由大写字母、小写字母和数字随机组成的、指定长度的字符串。
const string chars
: 字符集,包含所有可能的字符。var random = new Random()
: 创建随机数生成器。Enumerable.Repeat(chars, length)
: 将字符集重复 length 次。s => s[random.Next(s.Length)]
: 从字符集中随机取一个字符。new string(...)
: 将字符集转换为字符串。return result
: 返回生成的结果。注意:由于 Random
类算法的限制,生成的随机数并不严格随机,可能会产生重复的字符。如果需要生成高质量的随机数,建议使用 System.Security.Cryptography
命名空间中的函数。
public static string GenerateRandomString(int length)
{
var bytes = new byte[length];
using var random = new RNGCryptoServiceProvider();
random.GetBytes(bytes);
return Convert.ToBase64String(bytes);
}
以上函数会生成一个长度为指定值的随机字符串。
new byte[length]
:创建一个空的字节数组。using var random = new RNGCryptoServiceProvider()
:创建随机数生成器。random.GetBytes(bytes)
:用随机数填充字节数组。Convert.ToBase64String(bytes)
:将字节数组转换为 Base64 编码字符串。return
: 返回生成的结果。注意:由于 Base64 编码存在额外的字符(+
、/
、=
),生成的结果并不是纯字母数字串。如果需要生成纯字母数字串,可以将 Convert.ToBase64String()
替换为 BitConverter.ToString()
。