public IActionResult GeneratePassword([FromBody] RandomPWDConfig config) { _logger.LogInformation($"GeneratePassword called with params\n{config.ToString()}"); if (config.Length < 8 || config.Length > 127) { return(BadRequest("The length must be between 8 and 127")); } if (!config.Letters & !config.Symbols & !config.Numbers) { return(BadRequest("At least one flag must be enabled")); } var response = PasswordGenerator.generatePassword(config); return(Ok(response)); }
public static String generatePassword(RandomPWDConfig config) { var alpha = "abcdefghijklmnopqrstuvwxyz"; var num = "0123456789"; var sym = "`~!@#$%^&*()-_=+[]{}\\|\"';:,.<>/?"; var new_password = ""; var rng = new Random(); while (new_password.Length < config.Length) { var character = ""; if (config.Letters) { int index = rng.Next(alpha.Length); if (rng.NextDouble() >= 0.5) { character += alpha[index].ToString().ToUpper(); } else { character += alpha[index]; } } if (config.Numbers) { int index = rng.Next(num.Length); character += num[index]; } if (config.Symbols) { int index = rng.Next(sym.Length); character += sym[index]; } new_password += character; } var response = new string(new_password.ToCharArray(). OrderBy(s => (rng.Next(2) % 2) == 0).ToArray()) .Substring(new_password.Length - config.Length); return(response); }