我如何在C#中生成随机字母数字字符串?
如何在C#中生成随机的8个字符的字母数字字符串?
我听说LINQ是新的黑色,所以这里是我使用LINQ的尝试:
private static Random random = new Random();
public static string RandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
(注意:Random类的使用使得它不适合与安全相关的任何事情,例如创建密码或令牌。
如果您需要强大的随机数生成器,请使用RNGCryptoServiceProvider类。)
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var stringChars = new char[8];
var random = new Random();
for (int i = 0; i < stringChars.Length; i++)
{
stringChars[i] = chars[random.Next(chars.Length)];
}
var finalString = new String(stringChars);
没有Linq解决方案那么优雅。 ( - :
(注意:Random类的使用使得它不适用于任何与安全有关的内容 ,例如创建密码或令牌。如果需要强大的随机数生成器,请使用RNGCryptoServiceProvider类。)
这个实现(通过谷歌发现)听起来很合适。
与其中一些替代方案不同,这一个是加密的 。
using System.Security.Cryptography;
using System.Text;
namespace UniqueKey
{
public class KeyGenerator
{
public static string GetUniqueKey(int maxSize)
{
char[] chars = new char[62];
chars =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
byte[] data = new byte[1];
using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
{
crypto.GetNonZeroBytes(data);
data = new byte[maxSize];
crypto.GetNonZeroBytes(data);
}
StringBuilder result = new StringBuilder(maxSize);
foreach (byte b in data)
{
result.Append(chars[b % (chars.Length)]);
}
return result.ToString();
}
}
}
从这里讨论替代品中选出一个
链接地址: http://www.djcxy.com/p/17717.html