Generatore di password in C

Il seguente programma permette di generare una password casuale di n caratteri contenente numeri, lettere minuscole, lettere maiuscole e caratteri speciali.

Per poter generare numeri casuali in C abbiamo bisogno di due librerie: la stdlib.h e time.h che ci permettono di utilizzare la funzione rand e far in modo che i numeri generati non siano sempre uguali. Dopodiché possiamo definire una variabile “len” per memorizzare la dimensione della password e definire un array contenente tutti i caratteri che vogliamo usare durante la generazione della password.

Definiamo una funzione chiamata "genera_password", che calcola la lunghezza del vettore contenente i caratteri da usare durante la generazione della password usando la funzione sizeof, che indica la quantità di spazio di archiviazione in byte. Successivamente usiamo un ciclo for per generare numeri casuali da 0 alla lunghezza di “car”-1 e stampiamo a video il carattere contenuto nel vettore “car” nella posizione del numero casuale.

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

int len;
char car[] = "0123456789abcdefghijklmnoqprstuvwyzxABCDEFGHIJKLMNOQPRSTUYWVZX!@#$^&*?";

void genera_password(int size){
    int car_dim = sizeof(car)/sizeof(car[0]) -1;
    for(int i=0; i<size; i++){
        printf("%c", car[rand() % (car_dim)]);
    }
}

int main(){
    srand(time(NULL));

	printf("Lunghezza password: ");
    scanf("%d", &len);

    printf("\nPassword generata: ");
    genera_password(len);

	return 0;
}

Indice pagine linguaggio C: