我正在寻找一种方法来获取随机characters.I需要一个字符串必须包含至少2个大写字母,至少1个数字和特殊字符。 这里是我的代码:C#RNGCryptoServiceProvider和特殊字符
public static string CreateRandomPassword(int Length)
{
string _Chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ[_!23456790";
Byte[] randomBytes = new Byte[Length];
var rng = new RNGCryptoServiceProvider();
rng.GetBytes(randomBytes);
var chars = new char[Length];
int Count = _Chars.Length;
for(int i = 0;i<Length;i++)
{
chars[i] = _Chars[(int)randomBytes[i] % Count];
}
return new string(chars);
}
一些成果:
ZNQzvUPFKOL3x
BQSEkKHXACGO
他们没有特殊字符和数字。
的几率为你的算法创建一个字符串(?密码)是相当低的字母只是提供了其中三个('的[_ !')。 – khlr
分隔小写字母,大写字母,数字,特殊字符的字符串....随机生成一组这些字符串并以随机方式混合使用。 (可能有更好的方法) –
你也许只需要省力一些并使用guid即可。由于长度而更加随机的方式,同样不可能让人记住。 –