using System; using System.Security.Cryptography; using System.Text; namespace Dough.Utilities { public static class Random { private const string RandomStringCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private static readonly char[] RandomPasswordCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray(); public static string String(int length) { var stringChars = new char[length]; var random = new System.Random(); for (var i = 0; i < stringChars.Length; i++) stringChars[i] = RandomStringCharacters[random.Next(RandomStringCharacters.Length)]; return new string(stringChars); } public static string Password(int length) { var data = new byte[4*length]; using (var crypto = new RNGCryptoServiceProvider()) { crypto.GetBytes(data); } var result = new StringBuilder(length); for (var i = 0; i < length; i++) { var rnd = BitConverter.ToUInt32(data, i * 4); var idx = rnd % RandomPasswordCharacters.Length; result.Append(RandomPasswordCharacters[idx]); } return result.ToString(); } public static int Number(int length) { var random = new System.Random(); return random.Next(0, length); } public static string NumericalString(int length) { var stringChars = new char[length]; var random = new System.Random(); for (var i = 0; i < stringChars.Length; i++) stringChars[i] = RandomStringCharacters[random.Next(RandomStringCharacters.Length)]; return new string(stringChars); } } }