4

#PlatziCodingChallenge - Validador de contraseñas

En retos anteriores has creado un generador de contraseñas, ahora validarás su nivel de seguridad. Así que tu programa debe recibir un string con una contraseña considerando los siguientes parámetros:

  • Incluir al menos una letra minúscula
  • Incluir al menos una letra mayúscula
  • Incluir al menos un número
  • Incluir al menos un caracter especial
  • Tener una longitud mínima de 8 caracteres
    Se evaluará la contraseña con las siguientes características:
  • Insegura: cumple con solo 2 o menos parámetros
  • Medianamente segura: cumple de 3 o 4 parámetros
  • Segura: cumple con todos los parámetros
Escribe tu comentario
+ 2
Ordenar por:
1
19944Puntos

Validador de contraseñas en JavaScript y en Python (use caracteres unicode como en el otro reto)

// Validador de Contraseñas en JavaScript// Caracteres UNICODE (32 - 126)// CODES_SYMBOLS1 = [32, 47]// CODES_NUMBERS = [48, 57]// CODES_SYMBOLS2 = [58, 64]// CODES_UPPERLETTERS = [65, 90]// CODES_SYMBOLS3 = [91, 96]// CODES_LOWERLETTERS = [97, 122]// CODES_SYMBOLS4 = [123, 126]functionvalidatePassword(password) {
  let parameters = 0let charCodes = password.split('').map(char => char.charCodeAt())
  // ¿Incluye una letra minúscula?if (charCodes.find(charCode => charCode >= 97 && charCode <= 122)) { parameters++ }
  // ¿Incluye una letra mayúscula?if (charCodes.find(charCode => charCode >= 65 && charCode <= 90)) { parameters++ }
  // ¿Incluye un número?if (charCodes.find(charCode => charCode >= 48 && charCode <= 57)) { parameters++ }
  // ¿Incluye un caracter especial?if (charCodes.find(charCode => {
    return (charCode >= 32 && charCode <= 47)
    || (charCode >= 58 && charCode <= 64)
    || (charCode >= 91 && charCode <= 96)
    || (charCode >= 123 && charCode <= 126)
  })) { parameters++ }
  // ¿Tiene una longitud mínima de 8 caracteres?if (charCodes.length >= 8) { parameters++ }
  // ¿Cuántos parámetros cumple?if (parameters <= 2) {
    return'Contraseña insegura'
  } elseif (parameters >= 3 && parameters <= 4) {
    return'Contraseña medianamente segura'
  } elseif (parameters === 5) {
    return'Contraseña segura'
  }
}

console.log(validatePassword('hola')) // Contraseña inseguraconsole.log(validatePassword('abcde1234')) // Contraseña medianamente seguraconsole.log(validatePassword('[email protected]')) // Contraseña segura
# Validador de contraseñas en PythondefvalidatePassword(password):
  parameters = 0
  charCodes = []
  for char in password: charCodes.append(ord(char))
  # ¿Incluye una letra minúscula?if (hasCharCodeBetween(charCodes, 97, 122)): parameters += 1# ¿Incluye una letra mayúscula?if (hasCharCodeBetween(charCodes, 65, 90)): parameters += 1# ¿Incluye un número?if (hasCharCodeBetween(charCodes, 48, 57)): parameters += 1# ¿Incluye un caracter especial?if (hasCharCodeBetween(charCodes, 32, 47) or hasCharCodeBetween(charCodes, 58, 64) or hasCharCodeBetween(charCodes, 91, 96) or hasCharCodeBetween(charCodes, 123, 126)): parameters += 1# ¿Tiene una longitud mínima de 8 caracteres?if (len(charCodes) >= 8): parameters += 1# ¿Cuántos parámetros cumple?if (parameters <= 2): return'Contraseña insegura'elif (parameters >= 3and parameters <= 4): return'Contraseña medianamente segura'elif (parameters == 5): return'Contraseña segura'defhasCharCodeBetween(charCodes, min, max):for charCode in charCodes:
    if charCode >= min and charCode <= max:
      returnTruereturnFalse

print(validatePassword('hola')) # Contraseña insegura
print(validatePassword('abcde1234')) # Contraseña medianamente segura
print(validatePassword('[email protected]')) # Contraseña segura
1

En Python 😃

import random
contraseña=input('INGRESA TU OPCIÓN DE CONTRASEÑA: ')
minusculas=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
mayusculas=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
numeros=['1','2','4','5','6','7','8','9','0']
diccionario=[' ','|','°','¬','!','"','#','$','%','&','/','(',')','=','?','*','¿','¡','"','+','~','{','}','[',']',';',',',':','.','-','_','>','<']
cont=0
cont2=0
cont3=0
cont4=0
cont5=0for letra in contraseña:
    if letra in minusculas:
        if cont>=1:
            passelse:
            cont=cont+1elif letra in mayusculas:
        if cont2>=1:
            passelse:
            cont2=cont2+1elif letra in numeros:
        if cont3>=1:
            passelse:
            cont3=cont3+1elif letra in diccionario:
        if cont4>=1:
            passelse:
            cont4=cont4+1else:
        passif len(contraseña)>=8:
    cont5=cont5+1else:
    pass
seguridad=cont+cont2+cont3+cont4+cont5
if seguridad<=2:
    print('Tu contraseña es insegura')
elif seguridad==3or seguridad ==4:
    print('Tu contraseña es medianamente segura')
elif seguridad>4:
    print('Tu contraseña es segura')
else:
    pass
1
7896Puntos

Respuesta:

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Validador de contraseñas</title></head><style>
  * {
    margin: 0;
  }

  .contenedor {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100vh;
  }

  .inputs {
    display: flex;
    flex-flow: column;
    align-items: center;
    padding: 2rem;
  }

  .section {
    padding: 0.25rem2rem;
    display: flex;
    align-items: center;
  }

  .sectioninput, .sectionspan{
    margin-left: 12px;
    font-weight: bold;
  }


  .btn {
    border: 2px solid black;
    border-radius: 6px;
    cursor: pointer;
    padding: 20px;
  }

</style><body><divclass="contenedor"><h1style="margin-bottom: 24px;">Validador de contraseñas</h1><divclass="inputs"><sectionclass="section">
        Ingresa la contraseña que deseas validar: <inputid="contra"placeholder="contraseña"/></section><sectionclass="section"><spanstyle="margin-right: 10px;"id='resultado'></span></section></div><buttononclick="validar()"class="btn">Validar...</button></div><script>const datos = {
      num: [48,49,50,51,52,53,54,55,56,57],
      min: [97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],
      mayus: [65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],
      esp: [32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,58,59,60,61,62,63,64,91,92,93,94,95,96,123,124,125,126]
    }

    let flags = {
      num: false,
      min: false,
      mayus: false,
      esp: false,
      long: false,
    }

    functionvalidar() {
      flags = {
        num: false,
        min: false,
        mayus: false,
        esp: false,
        long: false,
      }
      let contra = document.getElementById('contra').value.split('')
      
      contra.map( caracter => {
        let charCode = caracter.charCodeAt(0)
        revisar(charCode, 'num')
        revisar(charCode, 'min')
        revisar(charCode, 'mayus')
        revisar(charCode, 'esp')
      })

      if (contra.length >= 8){
        flags.long = true
      }

      let aciertos = 0let resultado = Object.values(flags)
      resultado.map(boolean => {
        if (boolean){
          aciertos++
        }
      })

      if (aciertos <= 2){
        alert('Contraseña insegura')
      } elseif (aciertos > 2 && aciertos <= 4){
        alert('Contraseña medianamente segura')
      } elseif (aciertos === 5){
        alert('Contraseña segura')
      }
    }

    functionrevisar(charCode, grupo){
      datos[grupo].forEach( num => {
          if (num === charCode){
            flags[grupo] = true
          }
      })
    }
  </script></body></html>