Générateur de mot de passe application en langage C
Générateur de mot de passe application en langage C
Cet article propose en détaille une application en langage C pour générer des mots de passe.
- vous pouvez créer des mots de passe avec des majuscules, des minuscules, des chiffre, des caractères spéciaux.
- vous pouvez également créer un mot de passe en utilisant votre nom et prénom.
Vous pourrez télécharger le fichier au format zip il contient le code source complet.
Extrait du code source :
#include <iostream>
#include <ctime>
#include "Fenetre.h"
#include "FenCodeGenere.h"
using namespace std;
int loop=0;
QString code;
Fenetre::Fenetre() : QWidget()
{
setWindowIcon(QIcon("prog.bmp"));
setWindowTitle("MDP Générator");
setFont(QFont("digital", 12));
//layout principal
layoutPrincipal = new QVBoxLayout;
layoutNom = new QFormLayout;
nom = new QLineEdit;
prenom = new QLineEdit;
layoutNom->addRow("&Nom :", nom);
layoutNom->addRow("&Prenom :", prenom);
utilisateur = new QGroupBox("&Utilisateur :");
utilisateur->setLayout(layoutNom);
//1er layout : presentation du produit
label = new QLabel("<strong>Générateur de mot de passe</strong> !<br />Codé par <strong>Micmic</strong> !<br />Version 2.0", this);
label->setAlignment(Qt::AlignCenter);
//2eme layout : choix
box = new QGroupBox("Que voulez-vous &utiliser ?");
//sous layout : radiobutton
layoutChoix = new QVBoxLayout;
utilis = new QRadioButton("mot de passe avec votre nom, prénom et caractères spéc&iaux");
maj = new QRadioButton("mot de passe n'utilisant que des &majuscules");
min = new QRadioButton("mot de passe n'utilisant que des m&inuscules");
num = new QRadioButton("mot de passe n'utilisant que des &chiffres");
spe = new QRadioButton("mot de passe n'utilisant que des caractères &spéciaux");
mix = new QRadioButton("m&ot de passe utilisant des majuscules, minuscules, des chiffres\net des caractères spéciaux");
utilis->setChecked(true);
layoutChoix -> addWidget(utilis);
layoutChoix -> addWidget(maj);
layoutChoix -> addWidget(min);
layoutChoix -> addWidget(num);
layoutChoix -> addWidget(spe);
layoutChoix -> addWidget(mix);
box->setLayout(layoutChoix);
layoutLabel = new QVBoxLayout;
nbCaract = new QLabel("<strong><br />Le programme va générer des mots de passe <br />"
"de la longueur que vous préciserez ci dessous</strong><br />", this);
layoutLabel->addWidget(nbCaract);
nbCaract->setAlignment(Qt::AlignCenter);
boxCaractere = new QGroupBox("Nombe de caractères pour votre mot de passe :");//contenant spinbox et Qlabel
layoutCaractere = new QVBoxLayout; // layout contenant la spinbox
perso = new QPushButton("&Personnaliser le nombre de caractères");
perso->setToolTip("choisir le nombre de caractère pour le mot de passe");
perso->setFont(QFont("digital", 12));
layoutCaractere->addSpacing(10);
layoutCaractere->addWidget(perso);
boxCaractere->setLayout(layoutCaractere);
layoutSpace = new QHBoxLayout;
space = new QLabel("Le programme va vous proposer 10 mots de passe differents<br />");
space->setAlignment(Qt::AlignCenter);
layoutSpace ->addWidget(space);
layoutGenerer = new QHBoxLayout;
generer = new QPushButton ("&GENERER");
generer->setFont(QFont("digital", 14));
generer->setCursor(Qt::PointingHandCursor);
generer->setToolTip("générer le mot de passe");
layoutGenerer->addWidget(generer);
layoutSpace2 = new QHBoxLayout;
space2 = new QLabel("<br />");
layoutSpace2->addWidget(space2);
boutonsLayout = new QHBoxLayout;
m_about = new QPushButton ("A &Propos");
m_about->setToolTip("à propos");
aide = new QPushButton("&Aide");
aide->setToolTip("aide");
m_quitter = new QPushButton( "&Quitter");
m_quitter->setToolTip("Quitter");
boutonsLayout->addWidget(m_about);
boutonsLayout->addWidget(aide);
boutonsLayout->addWidget(m_quitter);
layoutPrincipal->addWidget(label);
layoutPrincipal->addWidget(utilisateur);
layoutPrincipal->addWidget(box);
layoutPrincipal->addWidget(nbCaract);
layoutPrincipal->addWidget(boxCaractere);
layoutPrincipal->addLayout(layoutSpace);
layoutPrincipal->addLayout(layoutGenerer);
layoutPrincipal->addLayout(layoutSpace2);
layoutPrincipal->addLayout(boutonsLayout);
setLayout(layoutPrincipal);
QObject::connect(m_quitter, SIGNAL(clicked()), qApp, SLOT(quit()));
QObject::connect(m_about, SIGNAL(clicked()), this, SLOT(ouvrirAbout()));
QObject::connect(aide, SIGNAL(clicked()), this, SLOT(Aide()));
QObject::connect(generer, SIGNAL(clicked()), this, SLOT(genererCode()));
QObject::connect(perso, SIGNAL(clicked()), this, SLOT(personnaliser()));
}
void Fenetre::ouvrirAbout()
{
QMessageBox::about(this,"MDP Générator", "Merci d'utiliser <strong>MDP Générator</strong>"
"<br /><br />MDP Générator est un Générateur de mot de passe, "
"<br />Développé par Micmic : codé en c++ avec une interface produite avec Qt"
"<br />Version 2.0, codé le 12 Janvier 2009 !"
"<br /><br />vous pouvez générer des mots de passe, des clés WEP, WAP, de cryptage,etc.... ");
setFont(QFont("digital", 12));
}
void Fenetre::genererCode()
{
srand(time(NULL));
//QString code;
if(nom->text().isEmpty() || prenom->text().isEmpty())
{
QMessageBox::critical(this, "Erreur", "Veuillez entrer un nom et un prénom");
}
if(loop ==0)
{
QMessageBox::critical(this,"MDP Générator", "vous devez d'abord choisir le nombre de caractères");
}
else
{
if(utilis ->isChecked())
{
const char spe[] = {'&', '~', '#', 'ç', '@', '£', '$', '%', 'µ', '§'}; // max = 9
int MAX =9, MIN=1;
code = "Proposition de MDP : \n~~~~~~~~~~~~~~~~~~~~\n\n";
for (int i=0; i < 10; i++)//loop = QLineEdit receuillant un nombre
{
code += spe[(rand() % (MAX - MIN +1)) + MIN] + nom->text().left(loop) + spe[(rand() % (MAX - MIN +1)) + MIN] + prenom->text().left(loop) + spe[(rand() % (MAX - MIN +1)) + MIN];
code += "\n";
} }