Autor Tema: Generador de contraseñas  (Leído 285 veces)

Carloscr03

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Generador de contraseñas
« en: 26 de Abril 2021, 12:26 »
Buenas.

Me gustaría saber si alguien ayudarme a completar lo que me queda de este programa que lo que va a hacer es mediante consola de comandos (cmd) nombraremos al archivo (en este caso se llama password) y seguido a esto especificaremos en consola lo que queremos que muestre: el número de caracteres que va a tener la contraseña poniendo (-1, -2, -3...) después si queremos que la contraseña sea solamente de letras minúsculas que lo especificaremos con: -n, si son mayúsculas con: -M, si es de números con: -d y luego si queremos utilizar varios de estos al mismo tiempo sería simplemente combinándolos, y si queremos que sea con todos los argumentos con -all. EJEMPLO: Contraseña de 9 caracteres con letras minúsculas y mayúsculas, y además, caracteres especiales: password -9 -Mn -c. Por cierto, al final también me gustaría añadir una función de error, que ya la tengo declarada al principio para que cuando el usuario coloque un parámetro que no existe, que le avise y mediante un printf() le avise de ello, aunque esto es relativamente fácil.

Código que llevo hecho:


/* Generador de contraseñas por consola -l -Mn -nM -all */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

void numeros(int);
void letras(int);
void mayusculas(int); //Solo mayúsculas
void minusculas(int); //Solo minúsculas
void letrastodo(int); //Mayúsuculas y minúsculas
void especiales(int); //Solo caracteres especiales
void mayusnumeros(int); //Mayúsculas y números al mismo tiempo
void minusnumeros(int); //Minúsculas y números al mismo tiempo
void mayusminusnumeros(int); //Mayúsculas, minúsculas y números al mismo tiempo
void todo(int); //Todo lo del programa (números, letras...)

void error (void); //Si no seleccionas alguno de los parámetros (función error, que hay que hacer al final)

char contrasenia[500]; //Se almacena la contraseña con 500 caracteres
char mayus[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char minus[] = "abcdefghijklmnopqrstuvwxyz";
char nums[] = "0123456789";
char caracteres[] = "!@#$^&*?";

int main(int argc, char* argv[]){
    srand(time(NULL));
    int longitud;
    char opcion[4];
    char item[4];
    sscanf(argv[1], "%c", item);

    if (strcmp(item, "H")==0 || strcmp (item, "H")==0) error();
    scanf(argv[2], "%c", opcion);

    longitud = atoi(item);
if (longitud==0) printf("La longitud de la clave no puede ser 0.");



if (argc==3){


    if (longitud < 5 || longitud < 66){

            if ((strcmp(opcion, "all"))==0) todo(longitud);
    if ((strcmp(opcion, "M"))==0) mayusculas(longitud);
    if ((strcmp(opcion, "n"))==0) minusculas(longitud);
    if ((strcmp(opcion, "d"))==0) numeros(longitud);
    if ((strcmp(opcion, "c"))==0) especiales(longitud);
    if ((strcmp(opcion, "Mn")==0) || (strcmp(opcion, "nM"))==0) letrastodo(longitud);
    if ((strcmp(opcion, "Md"))==0 || (strcmp(opcion, "dM"))==0) mayusnumeros(longitud);
    if ((strcmp(opcion, "md"))==0 || (strcmp(opcion, "dm"))==0) minusnumeros(longitud);
    if ((strcmp(opcion, "mdM")==0) || (strcmp(opcion, "mMd"))==0 || ((strcmp(opcion, "dmM")==0) || (strcmp(opcion, "Mmd"))==0))mayusminusnumeros(longitud);
    }
    else error();
}
else error();
}
Diría que me queda poco por hacer, ya que tengo lo que son las declaraciones y los ifs correctamente, pero lo que me quedaría sería si no me equivoco hacer las funciones de las propias letras, numeros, caracteres especiales... Para que se genere la propia contraseña, pero no se cómo hacerlo y he visto algún post en este mismo foro y no me termino de aclarar al respecto, aunque probablemente sea utilizando un switch para cada uno de los argumentos, aún así agradecería que completaseis el código y fueseis explicando más o menos los procedimientos que habéis llevado a cabo. Por cierto, si veis algún error no dudéis en corregírmelo, muchas gracias.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Re: Generador de contraseñas
« Respuesta #1 en: 26 de Abril 2021, 21:50 »
Buenas, para escribir en los foros es importante seguir las normas que se indican en https://aprenderaprogramar.com/foros/index.php?topic=1460.0

Voy a borrar este hilo porque el código no puede verse, está demasiado pequeño. Además tienes otro hilo sin responder: https://aprenderaprogramar.com/foros/index.php?topic=7985.0

Si lo deseas, crea un nuevo tema de nuevo siguiendo las normas citadas (responde hilos abiertos antes de crear otros nuevos; revisar las distintas cosas necesarias: incluir palabras clave en el título, poner el título en minúsculas, indicar el lenguaje o tema de consulta, si es un ejercicio código de la entrega del curso, forma correcta de insertar código, etc.). Si tienes dudas sobre cómo escribir en los foros escribe una consulta en el foro "Comunidad" exponiendo la duda para intentar solucionarla. Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".