Мне нужно создать случайный пароль, но он соответствует некоторым конкретным параметрам:
Должен иметь майус
Должен иметь числа
В нем должны быть специальные символы.
Не может содержать следующие строки "123", "12345", "56789", "123456789", "321", "54321", "987654321", "qwerty", "asdf", "zxcv "," poiuy "," lkjhg "," mnbv "
Среди прочего.
Я уже сделал это со следующим кодом, но он выдает мне ошибку StackOberflowException, чего ещеКак я могу добиться этого или что может быть решением этой ошибки?
public static string CrearPassword(int longitud,string usuario)
{
string caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890ñÑ-_¿.#¡";
StringBuilder res = new StringBuilder();
Random rnd = new Random();
while (0 < longitud--)
{
res.Append(caracteres[rnd.Next(caracteres.Length)]);
}
while (ValidPassword(res.ToString(), usuario)== false)
{
return CrearPassword(13,usuario);
}
return res.ToString();
}
public static bool ValidPassword(string pass, string usuario)
{
try
{
Match matchLongitud = Regex.Match(pass, @"^\w{8,15}\b");
Match matchNumeros = Regex.Match(pass, @"\d");
Match matchEspeciales = Regex.Match(pass, @"[ñÑ\-_¿.#¡]");
Match matchMayusculas = Regex.Match(pass, @"[A-Z]");
Match matchAdmin = Regex.Match(pass, @"admin");
Match matchContraseña = Regex.Match(pass, @"contraseña");
Match matchNombreUsuario = Regex.Match(pass, usuario);
var valoresProhibidos = new List<string>() { "123", "12345", "56789", "123456789", "321", "54321", "987654321", "qwerty", "asdf", "zxcv", "poiuy", "lkjhg", "mnbv" };
if (!matchNumeros.Success)
return false;
else if (!matchLongitud.Success)
return false;
else if (!matchEspeciales.Success)
return false;
else if (!matchMayusculas.Success)
return false;
else if (matchAdmin.Success)
return false;
else if (matchContraseña.Success)
return false;
else if (matchNombreUsuario.Success)
return false;
else
{
foreach (string valor in valoresProhibidos)
{
if (pass.Contains(valor))
{
return false;
}
}
}
return true;
должен проверить и вернуть пароль, но извлекает ошибку из SystemStackOverflowException введите описание изображения здесь