2011-03-07 39 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(秒,毫秒或其他)的一部分