• 18/10/2024 4:13 AM

Password Seguro

porJesus Flores

Ago 24, 2021

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"))
}

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

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