在C#.net中打印唯一键

时间:2011-03-07 07:31:18

标签: c#

我正在尝试创建一个生成大写,小写和数字键的密钥生成器。 我下面的当前代码使用随机数生成重复键。
如何更新它以生成唯一键?

 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);
    }

4 个答案:

答案 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的一部分(第二,毫秒或其他)