Caracteres mínimos necesarios para que una contraseña sea segura

Dada la string str que denota una contraseña, la tarea es contar los caracteres mínimos que deben agregarse para que la contraseña sea segura
Se dice que una contraseña es segura si cumple los siguientes criterios: 

  • Contiene al menos 8 caracteres.
  • Contiene al menos un dígito.
  • Contiene al menos un alfabeto en minúsculas.
  • Contiene al menos un alfabeto en mayúsculas.
  • Contiene al menos un carácter especial que incluye !@#$%^&*()-+

Ejemplos: 

Entrada: str = «Geeksforgeeks» 
Salida:
Explicación: 
Al agregar un dígito y un carácter especial, podemos hacer que la contraseña sea segura.
Entrada: str = «Geeks1» 
Salida:
Explicación: 
Se debe agregar un carácter especial junto con un carácter más para que la contraseña sea segura. 

Enfoque: este problema se puede resolver usando expresiones regulares

  • Cree las expresiones regulares para comprobar dígitos, caracteres especiales, mayúsculas y minúsculas del alfabeto.
  • Compile las expresiones regulares y encuentre coincidencias con la string de contraseña.
  • Aumente el contador, por ejemplo, count , para agregar caracteres cada vez que alguna de las expresiones regulares no coincida.
  • Después de agregar caracteres de conteo a la string de contraseña, verifique si la longitud de la string es menor a 8 o no. Si es así, agregue la diferencia para contar e imprimir.

A continuación se muestra la implementación del enfoque anterior. 
 

Java

// Java program to find minimum number
// of characters required to be added
// to make a password strong
 
import java.util.regex.Pattern;
import java.util.regex.Matcher;
 
class GFG {
 
    // Function to count minimum
    // number of characters
    static int countCharacters(
        String password)
    {
 
        int count = 0;
 
        // Create the patterns to search digit,
        // upper case alphabet, lower case
        // alphabet and special character
        Pattern digit = Pattern.compile("(\\d)");
        Pattern upper = Pattern.compile("([A-Z])");
        Pattern lower = Pattern.compile("([a-z])");
        Pattern spChar = Pattern.compile("(\\W)");
 
        // Search the above patterns in password.
        Matcher Digit = digit.matcher(password);
        Matcher Upper = upper.matcher(password);
        Matcher Lower = lower.matcher(password);
        Matcher Special = spChar.matcher(password);
 
        // If no digits are present
        if (!Digit.find()) {
            count++;
        }
        // If no upper case alphabet is present
        if (!Upper.find()) {
            count++;
        }
        // If no lower case alphabet is present
        if (!Lower.find()) {
            count++;
        }
        // If no special character is is present
        if (!Special.find()) {
            count++;
        }
 
        // Check if the string length after adding
        // the required characters is less than 8
        if ((count + password.length()) < 8) {
 
            // Add the number of
            // characters to be added
            count = count + 8
                    - (count + password.length());
        }
 
        return count;
    }
 
    // Driver Code
    public static void main(String args[])
    {
 
        String password1 = "Geeksforgeeks";
        System.out.println(
            countCharacters(password1));
 
        String password2 = "Geeks1";
        System.out.println(
            countCharacters(password2));
    }
}

Python3

# Python3 program to find
# minimum number of characters
# required to be added to make
# a password strong
import re
 
# Function to count minimum
# number of characters
def countCharacters(password):
 
    count = 0
 
    # Create the patterns to search digit,
    # upper case alphabet, lower case
    # alphabet and special character
    digit = re.compile("(\\d)")
    upper = re.compile("([A-Z])")
    lower = re.compile("([a-z])")
    spChar = re.compile("(\\W)")
 
    # Search the above patterns
    # in password.
 
    # If no digits are present
    if(not re.search(digit,
                     password)):
        count += 1
 
    # If no upper case alphabet
    # is present
    if(not re.search(upper,
                     password)):
        count += 1
 
    # If no lower case alphabet
    # is present
    if(not re.search(lower,
                     password)):
        count += 1
 
    # If no special character
    # is is present
    if(not re.search(spChar,
                     password)):
        count += 1
 
    # Check if the string length
    # after adding the required
    # characters is less than 8
    if((count +
        len(password)) < 8):
 
        # Add the number of
        # characters to be added
        count = count + 8 - (count +
                             len(password))
 
    return count
 
# Driver code
password1 = "Geeksforgeeks"
print(countCharacters(password1))
 
password2 = "Geeks1"
print(countCharacters(password2))
 
# This code is contributed by avanitrachhadiya2155
Producción: 

2
2

 

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *