Un sitio web necesita validar la seguridad de la contraseña de inicio de sesión, por lo cual considera un password fuerte si satisface lo siguiente:
Su tamaño es al menos de 6
Contiene al menos un digíto
Contiene al menos una minúscula
Contiene al menos una mayúscula
Contiene al menos un caracter especial, considerando los siguientes: !@#$%^&*()-+
Dado un password puedes crear una función que nos indique el mínimo de caracteres que se necesitan agregar al password para que sea seguro?.
caracteres considerados:
dígitos= “0123456789”
minúsculas= “abcdefghijklmnopqrstuvwxyz”
mayúsculas= “ABCDEFGHIJKLMNOPQRSTUVWXYZ”
especiales= “!@#$%^&*()-+”
Ejemplo:
password:#GoEnTuIdioma
Resultado esperado: 1, puesto que a nuestro password le hace falta un carácter que sea un digito.
Parámetros esperados por la función:
int n: el tamaño del password
string password: password ingresado
Retorno de la función:
int: numero mínimos de caracteres a ingresar
No dudes en compartir tu solución, a continuación te comparto mi solución.
package main import ( "fmt" "unicode" ) /* * Función numeroMinimoCaracteres * * La función retorna un entero * La función acepta los siguientes parametros * 1. INTEGER tamanio * 2. STRING contrasenia */ func numeroMinimoCaracteres(tamanio int32, contrasenia string) int32 { // Regresa el numero minimo de caracteres para que un password sea seguro var isDigit, isMayus, isMinus, isEspecial, requeridos int32 for _, v := range contrasenia { if unicode.IsDigit(v) { isDigit = 1 } else if unicode.IsUpper(v) { isMayus = 1 } else if unicode.IsLower(v) { isMinus = 1 } else { isEspecial = 1 } } //minimo de caracteres que necesitan ser agregados requeridos = 4 - (isDigit + isMayus + isMinus + isEspecial) if tamanio+requeridos < 6 { return 6 - tamanio } return requeridos } func main() { fmt.Println(numeroMinimoCaracteres(11, "#GoEnTuIdioma")) }