2010-08-19 54 views
0

我已經寫了一些代碼來生成隨機字符序列,但它並不:如何創建一串隨機字符(如密碼...)?

 byte[] sbytes = { 1, 0, 1, 0, 1 }; 
     String sstring; 
     System.Random r = new System.Random(); 

     r.NextBytes(sbytes); 
     sstring = Convert.ToBase64String(sbytes); 

     sstring = Path.GetRandomFileName(); 

     sstring = sstring.Replace("=", ""); 
     sstring = sstring.Replace(".", ""); 

     textBox1.Text = sstring.ToString(); 

我相信這個問題是和的nextBytes之間ToBase64String。我不知道如何做這項工作。你如何做正確的轉換,將其傳遞給文本框進行顯示?

+6

哪些鏈接你想做什麼? **不要**使用'Path.GetRandomFileName'來產生隨機串! – 2010-08-19 20:23:11

回答

4

如果你想產生一個隨機密碼,這裏是一個great example。這是another one這是更天真。只需忘記Path.GetRandomFileName函數。

+0

持久性+1! – 2010-08-19 20:55:26

+0

非常感謝你們。非常感謝您的幫助。 – Nightforce2 2010-08-19 22:41:19

0

你的文件名替換隨機數據:

sstring = Convert.ToBase64String(sbytes); 
sstring = Path.GetRandomFileName(); 

第二條語句忽略現有的值由第一語句設置,所以NextRandom()ToBase64String的通話是完全不相干的。

你究竟想要做什麼?

編輯:這不是一個非常好的創建隨機密碼的方法。對於一件事,你應該使用SecureRandom而不是Random,你可能會想,以避免混淆如「0」和「O」,「l」和「1」看起來相同的功能。你可能只是自己使用Path.GetRandomFileName,但它不是真的是它的設計。

+0

只需使用ToBase64String和GetRandomFilename製作隨機密碼即可。 – Nightforce2 2010-08-19 20:24:59

+0

你是什麼意思,混淆O和0有沒有字母使用在示例字符串中的第一位... – Nightforce2 2010-08-21 09:16:21

+0

@ Nightforce2:什麼「樣本字符串」你在說什麼?如果你從隨機數據中使用base64,你絕對可以得到一個字符串,比如OOO0O0OO,這在許多字體中很難區分。 – 2010-08-21 10:57:02

0

如果你寫

sstring += Path.GetRandomFileName(); 

我猜結果會更喜歡你在找什麼。然而,這只是僞隨機的,你應該看看達林公佈