Skip to main content
added 818 characters in body
Source Link
levent
  • 131
  • 3

Password_Options is not must

    private string CreatePassword(int length)
    {
        using (RNGCryptoServiceProvider rProvider = new RNGCryptoServiceProvider())
        {
            // ASCII printable characters
            char[] chars = Enumerable.Range(33, 94).ToArray().Select(a => (char)a).ToArray();
            string source = new string(chars);
            byte[] random = new byte[source.Length];
            rProvider.GetBytes(random);
            var pwd = (from k in
                           from c in source select new { c = c, o = random[source.IndexOf(c)] }
                       orderby k.o
                       select k.c).Take(length).ToArray();
            return new string(pwd);
        }
    }

Password_Options is not must

    private string CreatePassword(int length)
    {
        using (RNGCryptoServiceProvider rProvider = new RNGCryptoServiceProvider())
        {
            // ASCII printable characters
            char[] chars = Enumerable.Range(33, 94).ToArray().Select(a => (char)a).ToArray();
            string source = new string(chars);
            byte[] random = new byte[source.Length];
            rProvider.GetBytes(random);
            var pwd = (from k in
                           from c in source select new { c = c, o = random[source.IndexOf(c)] }
                       orderby k.o
                       select k.c).Take(length).ToArray();
            return new string(pwd);
        }
    }
Source Link
levent
  • 131
  • 3

this can be alternate..

    private string CreatePassword(int length, Password_Options options)
    {
        const string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        const string valid_all = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_-=+{}:;\\<>?|,./`~[]'";
        using (RNGCryptoServiceProvider rProvider = new RNGCryptoServiceProvider())
        {
            var source = options == Password_Options.ALL ? valid_all : valid;
            byte[] random = new byte[source.Length];
            rProvider.GetBytes(random);
            var pwd = (from k in
                           from c in source select new { c = c, o = random[source.IndexOf(c)] }
                       orderby k.o
                       select k.c).Take(length).ToArray();
            return new string(pwd);
        }
    }