2011-03-07 121 views
1

我正在尝试使密钥生成器生成大写,小写和数字键。 我现在的代码使用随机数生成重复键。
我如何更新它来生成唯一的密钥?
在C#中打印唯一键.net

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

如果这不是一项功课,那么做@Tobias说的......或Simon的回答 – 2011-03-07 07:41:20

+0

在一个不相干的笔记上,使用存储布尔值的字符串,显然是错误的。如果sDelimeterOption的值为'Yes',会发生什么情况? – SWeko 2011-03-07 07:43:40

回答

2

您可以使用GUID类!

每个GUID都是唯一的,即使在其他系统中也是如此。

System.GUID.NewGuid().ToString()

+0

GU真石! – 2011-03-07 07:39:17

1

您可以存储现有生成的密钥,并检查新生成的密钥已经产生与否。

1

根据所需的密钥长度,而不是使用随机的(如果“R”指向随机的),你可以上的GUID基础的随机数字(128位密钥),或在什么提供RNGCryptoServiceProvider班。

1

指尖很好,但如果你想要更漂亮的东西(IE:约束在字符串的某些部分),那么你需要排序做你在做什么,除非你需要用不同的种子初始化你的随机对象。这样做的最好方法是使用DateTime.Now(秒,毫秒或其他)的一部分