예제 #1
0
 public static Task<string> CryptoRandom(int count, int minimum, int maximum)
 {
     return Task.Run(() =>
     {
         var buffer = new StringBuilder();
         var r = new CryptoRNG();
         for (int i = 0; i < count; i++)
         {
             buffer.Append(r.Next(minimum, maximum));
             buffer.Append("\r\n");
         }
         return buffer.ToString();
     });
 }
예제 #2
0
        public static Task<string> Passwords(int length, int count, bool lowercase, bool uppercase, bool numbers, bool special)
        {
            return Task.Run(() =>
            {
                var pool = new List<char>(90);
                if (lowercase) pool.AddRange("abcdefghijklmnopqrstuvwxyz".ToCharArray());
                if (uppercase) pool.AddRange("ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray());
                if (numbers) pool.AddRange("0123456789".ToCharArray());
                if (special) pool.AddRange("_+-/&#!?@[];:".ToCharArray());

                var randomized = new List<char>(pool.Count);
                var r = new CryptoRNG();
                while (pool.Count > 0)
                {
                    var index = r.Next(pool.Count);
                    randomized.Add(pool[index]);
                    pool.RemoveAt(index);
                }

                var buffer = new StringBuilder();

                for (int i = 0; i < count; i++)
                {
                    for (int j = 0; j < length; j++)
                    {
                        var pick = r.Next(randomized.Count);
                        buffer.Append(randomized[pick]);
                    }
                    buffer.Append('\n');
                }

                return buffer.ToString();
            });
        }