Hace un tiempo atrás un amigo me preguntaba como podía crear contraseñas en Excel, sin utilizar macros, ya que le "molestaba" el cartel de "habilitar macros" cada vez que habría el libro. Al margen de esa molestia, me indicaba que los usuario muchas veces, sin querer, deshabilitaban las macros y (obviamente) el generador de contraseñas no funcionaba.
Si bien existen muchas formas de resolver este planteamiento, opté por utilizar dos funciones de Excel:ALEATORIO() y CARACTER(numero).
Sintaxis:
=ALEATORIO(): hasta la versión 2003 no soportaba ningún argumento. Devuelve un valor entre 0 y 1, como lo muestra la siguiente imagen:
atencion: cada vez que se producza algún evento en la hoja (ingresar un valor, modificarlo, eliminar una fila, etc, etc) ALEATORIO() recalculará y cambiará los resultados.
El tema es que estos numeros, así como están, no nos sirven de mucho, ya que los valores devueltos poseen un rango muy bajo (de 0 a 1). Ahora mostraré como especificarle a Excel que me retorne numeros aleatorios entre dos límites preestablecidos. La función queda:
=(LIMITE SUPERIOR - LIMITE INFERIOR + 1) * ALEATORIO() + LIMITE INFERIOR
Si quisiéramos crear una lista de numeros aleatorios comprendidos entre 10 y 100, deberíamos ingresar:
=(100 - 10 + 1) * ALEATORIO() + 10
lo que generaría lo siguiente:
bien. ningun numero es menor a 10 ni mayor a 100
Para el ejemplo de las contraseñas los decimales están de mas, por lo tanto anido lo anteriormente expuesto dentro de la funcion ENTERO(), que se encargará de truncar los decimales:
=ENTERO((100-10+1)*ALEATORIO()+10)
La buena noticia para los usuarios de Excel 2007: la gente de Microsoft contempló todo esto y creó la función ALEATORIO.ENTRE(limite_inferior; limite_superior), que nos evita todo lo realizado hasta el momento:
el mismo resultado, con menos esfuerzo... pero no todos utilizan la última versión de excel 2007, por lo tanto deberán hacerlo como en el primer ejemplo.
Como no será una sorpresa a estas alturas de nuestras vidas, para el ordenador todo se traduce a números, y las letras no escapan a esta regla. Entonces, teniendo en cuenta que:
1) la letra "a" es el numero 97 y la "z" es el 122
2) la letra "A" es el numero 65 y la "Z" es el 90
3) el numero "0" es el numero 48 y el 9 es el 57
(pueden corroborar cualquiera de estos datos presionando, por ejemplo, "alt + 122")
tengo ahora que generar aleatorios entre (97 y 122) / (65 y 90) / (48 y 57), para tener la base de una contraseña alfanumérica.
En mi caso diseñé una pequeña grilla que contemplaba contraseñas de 6, de acuerdo a lo que me habían solicitado:
los tres primeros y tres ultimos tienen un rando desde 65 a 90 (letras), mientras que los dos centrales de 48 a 57 (números)
Y para finalizar la primera parte, convertimos la grilla con la función CARACTER(numero):
a cada número aleatorio generado en la fila 2 lo convertimos a su correspondiente caracter en la fila 4, utilizando la funcion descripta en la barra de formulas de la imagen
El ejercicio anterior genera contaseñas unicamente con letras mayúsculas, y es una práctica poco recomendable, ya que es harto aconsejable mezclarlas con minúsculas, por cuestiones de seguridad.
La diferencia numérica entre las minúsculas y mayúsculas es de 32 posiciones. (noten que la "a" es el 97 y la "A" es 65, por lo tanto: 97 - 65=32). Con esto en mente, podemos sumarle en algunas celdas a nuestra función original 32 y obtendremos caracteres minúsculos:
creamos la contraseña CxT31PzW
Para complicarle un poco mas la vida a cualquier programa desencriptador, sería necesario (por ejemplo) reemplazar por lo menos dos letras por algunos algunos caracteres especiales, como guion bajo, arroba y ampersand ( _ @ &).
Quizás sea "renegar un poco mas", pero hago lo siguiente para darle a cualquiera de los tres signos las mismas posibilidades de aparecer, y hacer algo realmente al azar:
=ELEGIR((ENTERO(3-1+1)*ALEATORIO()+1);"_";"@";"&")
Como primer argumento de ELEGIR() paso un numero aleatorio entre 1 y 3. Los tres restantes argumentos son los tres caracteres en cuestión. Si en el primer argumento el resultado es 1, la función me devolverá "_" (guion bajo), si es 2 me devolverá "@" (arroba) y, por ultimo, si es 3 el "&" (ampersand), como podemos apreciar en la siguiente imagen:
generé esta grilla a modo de ejemplo: nueve resultados de la función creada, que totalmente al azar nos devuelve uno de los caracteres que agregaremos a la contraseña.
A estas alturas solo resta incorporar lo arriba descripto en dos lugares de la grila de contraseñas:
ahora sí tenemos un password bastante seguro y completo, según los estándares actuales.
Excel 2003 y anteriores: menu Herramientas / Opciones / Pestaña "Calcular", seleccionamos la opcion "manual" y deshabilitamos "actualizar antes de guardar":
Cabe aclarar que en ambos casos será necesario presionar "F9" para así llamar a un recálculo y que Excel genere una nueva contraseña.
Quizás no implementen este trabajo, aunque espero les haya sido de utilidad para: manejar los aletorios y aprender sobre las funciones CARACTER() y ELEGIR().
En mi próximo post brindaré una solución mucho mas completa con VBA.
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Etiquetas
Funciones
Etiquetas:
Funciones
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Se puede evaluar con excel una encuesta
ResponderEliminarEstimado: con Excel se puede hacer prácticamente cualquier cosa. Quedo a tu disposición para ver esa encuesta y que tipo de análisis necesitas. Salu2.xlsx
ResponderEliminar