C++ generare password casuali

Codice C++ per un generatore di password casuali. Non ho trovato un modo più facile per incollarlo tramite codice HTML per evidenziare le parole chiave.

Le opzioni prevedono lunghezza libera e password con e senza caratteri speciali.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"!@#$%^&*";

static const char carattere_speciale[]=
"!@#$%^&*";

int size = sizeof(alphanum) - 1;

int main()
{
    //stabilire la lunghezza della password
    int lunghezza;
    cout << "Quanti caratteri deve avere la password?" << endl;    
    cin >> lunghezza;

 
    //utilizzo di caratteri speciali
    char scelta = 's';
    do{
        cout << "Usa caratteri speciali? (s/n)" << endl;         cin >> scelta;
    }
    while ((scelta != 's') && (scelta != 'n'));
    
    //genera la password
    bool f_special = false;
    char c = 'a';
    
    switch (scelta){
        case ('s'):
            srand(time(0));
            for(int i = 0; i < lunghezza; i++)
            {
                c = alphanum[rand() % (size)];

                if(c =='!' || c=='@' || c=='#' || c=='$' || c=='%' || c=='^' || c=='&' || c=='*')
                    f_special = true;

                if((i == lunghezza-1) && (f_special == false))
                {
                    c = carattere_speciale[rand() % 7];
                    cout << c;
                }
                    else
                    cout << c;
            }
            break;
        
        case ('n'):   
            srand(time(0));
            for(int i = 0; i < lunghezza; i++)
        {
            cout << alphanum[rand() % (size-8)];
        }
            break;
        default:
            cout << "ERRORE" << endl;   
    }
    
    //evitare la scomparsa della console
    cout << endl;
    cin.get();
    cin.get();
    return 0;
}


Annunci