Validador de contraseñas completado.

This commit is contained in:
2025-12-14 01:36:11 +01:00
parent 424f765ef6
commit 296a9644c4
4 changed files with 136 additions and 19 deletions

View File

@@ -13,12 +13,12 @@
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "BDD/SQL/Disparadores.md", "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md",
"mode": "source", "mode": "preview",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "Disparadores" "title": "Ejercicios - Funciones puras"
} }
}, },
{ {
@@ -27,16 +27,15 @@
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "README.md", "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md",
"mode": "source", "mode": "source",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "README" "title": "Extra"
} }
} }
], ]
"currentTab": 1
} }
], ],
"direction": "vertical" "direction": "vertical"
@@ -237,10 +236,15 @@
"obsidian-git:Open Git source control": false "obsidian-git:Open Git source control": false
} }
}, },
"active": "620cc3e7430b0ac1", "active": "34eecf2b06cedd2e",
"lastOpenFiles": [ "lastOpenFiles": [
"Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/validador_de_contraseñas.sh~",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/test",
"BDD/SQL/Disparadores.md", "BDD/SQL/Disparadores.md",
"README.md",
"Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md",
"BDD/SQL/Lenguaje de definición de datos (DDL).md", "BDD/SQL/Lenguaje de definición de datos (DDL).md",
"BDD/SQL/Lenguaje de Manupulación de Datos (DML).md", "BDD/SQL/Lenguaje de Manupulación de Datos (DML).md",
"BDD/SQL/Procedimientos almacenados.md", "BDD/SQL/Procedimientos almacenados.md",
@@ -248,10 +252,8 @@
"BDD/SQL/SQL.md", "BDD/SQL/SQL.md",
"BDD/SQL/Sintaxis (Keywords).md", "BDD/SQL/Sintaxis (Keywords).md",
"BDD/SQL/Importación y exportación de base de datos.md", "BDD/SQL/Importación y exportación de base de datos.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Arrays asociativos.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Arrays asociativos.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/validador_de_contraseñas.sh", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/validador_de_contraseñas.sh",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/verificador-de-", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/verificador-de-",
"BDD/SQL/Diario/Clase 4 de diciembre.md", "BDD/SQL/Diario/Clase 4 de diciembre.md",
@@ -268,13 +270,9 @@
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Procesos hijos y paralelismo.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Procesos hijos y paralelismo.md",
"conflict-files-obsidian-git.md", "conflict-files-obsidian-git.md",
"Programación/PHP/PHP", "Programación/PHP/PHP",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Trampas (traps).md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Señales.md",
"Documentación personal/Mecanica de Unix/Sin nombre", "Documentación personal/Mecanica de Unix/Sin nombre",
"Servidores/M5/Actividades", "Servidores/M5/Actividades",
"Servidores/M5/Actividades/RA2", "Servidores/M5/Actividades/RA2",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios",
"Documentación personal/Seguridad-Informatica/Vista General 1.canvas", "Documentación personal/Seguridad-Informatica/Vista General 1.canvas",
"Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/specops.svg", "Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/specops.svg",
"Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/satan.png", "Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/satan.png",

View File

@@ -79,6 +79,81 @@ Objetivo: Que detecte la longitud y cantidad de caracteres especiales y dará el
```Shell ```Shell
#!/bin/bash #!/bin/bash
# Funciones Puras # Funciones Puras
# En caso de muchos condicionales
# Recurrir a negaciones
longitud() {
local passwd=$1
local long=${#passwd}
if [[ "$long" -gt 8 ]]; then
echo "PWD_GT_8"
else
echo "PWD_LT_8"
fi
}
minusculas() {
local passwd=$1
if [[ "$passwd" =~ [a-z] ]]; then
echo "MINLETTERS"
else
echo "NO_MINLETTERS"
fi
}
mayusculas () {
local passwd=$1
if [[ "$passwd" =~ [A-Z] ]]; then
echo "MAYLETTERS"
else
echo "NO_MAYLETTERS"
fi
}
numeros () {
local passwd=$1
if [[ "$passwd" =~ [0-9] ]]; then
echo "NUMBERS"
else
echo "NO_NUMBERS"
fi
}
caracteresE () {
local passwd=$1
if [[ "$passwd" =~ [^a-zA-Z0-9] ]]; then #Caso curioso: Se recurre a la negacion, ya que si existe un
#caracter especial, este no estará en las tablas de mayuscula, minuscula ni numeros.
echo "ECARACTERS"
else
echo "NO_ECARACTERS"
fi
}
validador () {
local passwd=$1
local long=$(longitud "$passwd")
local min=$(minusculas "$passwd")
local may=$(mayusculas "$passwd")
local num=$(numeros "$passwd")
local carE=$(caracteresE "$passwd")
res=("$long" "$min" "$may" "$num" "$carE")
local puntuacion=0
local totcriterios=5
for i in "${res[@]}"; do
if [[ $i = "PWD_GT_8" || $i = "MINLETTERS" || $i = "MAYLETTERS" || $i = "NUMBERS" || $i = "ECARACTERS" ]]; then
((puntuacion++)) # Esto tiene un error de sintaxis aritmetica: Se esperaba un operando (el elemento de error es "+"). El error sale cuando no se introduce uno de los valores anteriores, como por ejemplo, no poner ningun simbolo.
#Update: EUREKA! Al poner $, bash expande el valor antes de la operacion aritmetica.
#Si la puntuacion vale 0, bash intenta ejecutar ((0++)).
fi
done
((porcentaje=puntuacion * 100 / totcriterios))
if [[ "$porcentaje" -lt 41 ]]; then
echo "Weak"
elif [[ "$porcentaje" -lt 71 ]]; then
echo "Mid"
else
echo "Strong"
fi
}
read -p "Introduce una contraseña: " a
resultado=$(validador "$a" )
``` ```
Bibliografía Web: Bibliografía Web:

View File

@@ -21,17 +21,61 @@ minusculas() {
} }
mayusculas () { mayusculas () {
local passwd=$1 local passwd=$1
if [["$passwd" =~ [A-Z] ]]; then if [[ "$passwd" =~ [A-Z] ]]; then
echo "MAYLETTERS" echo "MAYLETTERS"
else else
echo "NO_MAYLETTERS" echo "NO_MAYLETTERS"
fi fi
} }
numeros () {
local passwd=$1
if [[ "$passwd" =~ [0-9] ]]; then
echo "NUMBERS"
else
echo "NO_NUMBERS"
fi
}
caracteresE () {
local passwd=$1
if [[ "$passwd" =~ [^a-zA-Z0-9] ]]; then #Caso curioso: Se recurre a la negacion, ya que si existe un
#caracter especial, este no estará en las tablas de mayuscula, minuscula ni numeros.
echo "ECARACTERS"
else
echo "NO_ECARACTERS"
fi
}
validador () {
local passwd=$1
local long=$(longitud "$passwd")
local min=$(minusculas "$passwd")
local may=$(mayusculas "$passwd")
local num=$(numeros "$passwd")
local carE=$(caracteresE "$passwd")
res=("$long" "$min" "$may" "$num" "$carE")
local puntuacion=0
local totcriterios=5
for i in "${res[@]}"; do
if [[ $i = "PWD_GT_8" || $i = "MINLETTERS" || $i = "MAYLETTERS" || $i = "NUMBERS" || $i = "ECARACTERS" ]]; then
((puntuacion++)) # Esto tiene un error de sintaxis aritmetica: Se esperaba un operando (el elemento de error es "+"). El error sale cuando no se introduce uno de los valores anteriores, como por ejemplo, no poner ningun simbolo.
#Update: EUREKA! Al poner $, bash expande el valor antes de la operacion aritmetica.
#Si la puntuacion vale 0, bash intenta ejecutar ((0++)).
fi
done
((porcentaje=puntuacion * 100 / totcriterios))
if [[ "$porcentaje" -lt 41 ]]; then
echo "Weak"
elif [[ "$porcentaje" -lt 71 ]]; then
echo "Mid"
else
echo "Strong"
fi
}
read -p "Introduce una contraseña: " a read -p "Introduce una contraseña: " a
resultado=$(validador "$a" )
resultado=$(longitud "$a") echo "Su contraseña es $resultado"
echo "$resultado"