2017-06-14 38 views
1

我想生成160个不同的随机用户和密码,现在当我在用户和密码变量(for循环中)上添加断点时,代码似乎正常工作。但是当我运行没有断点的代码时,Passwords.csv对于所有160行具有相同的输出。任何帮助表示赞赏当添加断点时,C#程序在文件中生成相同的输出

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 

namespace WriteCSVPasswords 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string path = @"c:\temp\Passwords.csv"; 
      string user = null; 
      string password = null; 
      string[] file = new string[160]; 

      for (int i = 0; i < 160; i++) 
      { 
       user = CreatePassword(4); 
       password = CreatePassword(5); 
       file[i] = user + ";" + password + ";" + Base64Encode(user + ":" + password); 
       user = null; 
       password = null; 
      } 

      if (!File.Exists(path)) 
      { 
       // Create a file to write to. 
       File.WriteAllLines(path, file, Encoding.UTF8); 
      } 



     } 

     public static string CreatePassword(int length) 
     { 
      const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.+-!"; 
      StringBuilder res = new StringBuilder(); 
      Random rnd = new Random(); 
      while (0 < length--) 
      { 
       res.Append(valid[rnd.Next(valid.Length)]); 
      } 
      return res.ToString(); 
     } 

     public static string Base64Decode(string base64EncodedData) 
     { 
      var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData); 
      return System.Text.Encoding.UTF8.GetString(base64EncodedBytes); 
     } 
     public static string Base64Encode(string plainText) 
     { 
      var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); 
      return System.Convert.ToBase64String(plainTextBytes); 
     } 
    } 
} 

回答

5

我怀疑这与断点有关。 (代码灰色使有关的时间差非常好的一点使用断点时,所以它关系到这一点。)

为确保您有一个问题与Random rnd = new Random();,因为你重新创建随机数生成器,它会重新启动所有然后再次。

我建议在课堂上申报rnd

+3

可能*与断点有关,至少在某种意义上说,如果他暂停执行一段时间,时间将会不同,从而产生不同的随机数。 :-) –

+0

好的,好点@CodyGray –

+0

的确,班级的rnd让我得到了正确的答案。 @CodyGray现在我也完全理解为什么这种奇特的行为发生了,毕竟不是特别的;)Thx! – hatsjie

相关问题