我正在尝试创建一个生成大写,小写和数字键的密钥生成器。
我下面的当前代码使用随机数生成重复键。
如何更新它以生成唯一键?
public static void printLowerCaseKeys()
{
string array = "";
int k = 0;
if (sDelimeterOption == "yes")
{
while (k < sKeyLength)
{
for (int i = 0; i < sDelimeterCharPosition; i++)
{
if (k >= sKeyLength)
break;
array = array + (char)r.Next(97, 123);
k++;
}
if (k < sKeyLength)
{
array = array + sDelimeterChar;
k++;
}
}
}
else
{
while (k < sKeyLength)
{
array = array + (char)r.Next(97, 123);
k++;
}
}
Console.WriteLine(array);
}
答案 0 :(得分:2)
您可以使用GUID类!
每个GUID都是唯一的,即使在其他系统中也是如此。
System.GUID.NewGuid().ToString()
答案 1 :(得分:1)
您可以存储现有生成的密钥,并检查是否已生成新生成的密钥。
答案 2 :(得分:1)
根据所需的密钥长度,而不是使用Random(如果'r'指向Random),您可以将随机数基于Guids(对于128位密钥)或提供RNGCryptoServiceProvider类的内容
答案 3 :(得分:1)
Guids很好,但是如果你想要更漂亮的东西(I.E。:在字符串的某些部分受到约束)那么你需要做你正在做的事情,除非你需要用不同的种子初始化你的随机对象。执行此操作的最佳方法是使用DateTime.Now的一部分(第二,毫秒或其他)