Générateur de mots de passe

Transcription

Générateur de mots de passe
Le programme du générateur de mots de passe, rédigé en Turbo
Pascal, comporte trois fichiers sources : le script de base
(M_PASSE.PAS), associé à deux unités : l’une contenant les routines
utilitaires (U_FPUTIL.PAS), l’autre étant réservée au générateur de
nombres pseudo-aléatoires (U_GNPSAL.PAS).
Deux choix se présentent, conformément aux souhaits exprimés
sur le forum, concernant la possibilité de choisir la longueur du mot de
passe, ainsi que les nombres de chaque type de caractères :
# Option 1: choix du nombre total de caractères, et des probabilités
de tirage (exprimées en pourcentage, donc sous forme d’entiers) de
chaque catégorie (chiffres, majuscules, minuscules et symboles) ;
# Option 2 : choix préalable des nombres de chacun des quatre
types de caractères.
Dans tous les cas l’ensemble des caractères disponibles couvre
l’intervalle [#033 .. #126] de la table ASCII, et la longueur du mot de
passe est limitée à 50.
S’y ajoutent trois options supplémentaires, déterminantes vis-à-vis du
résultat :
a) le choix du sous-domaine [Imin .. Imax] de [1 .. 32] sur lequel les
symboles feront l’objet d’un tirage aléatoire (il y en a en tout 32) ;
b) La valeur d’un facteur d’atténuation (Fa), réel compris entre
(10^-4) et l’unité ; le poids statistique du caractère sortant est multiplié
par ce facteur, ce qui rend moins probable (sans l’interdire) la
réapparition immédiate du même caractère - effet bien visible sur une
séquence de 50 chiffres, ou mieux de 50 symboles pris sur [Imin ..
Imin+4] .
Dans le cas où Fa=1 les tirages deviennent indépendants des
précédents, et plusieurs doublets (**) peuvent apparaître ; les triplets
(***) ne sont alors pas rares.
Le choix d’un facteur très petit ou nul (Fa < 10^-19 environ)
conduirait au blocage du programme, dès l’intervention d’un mot de
passe trop long.
c) le mode d’initialisation du générateur de nombres pseudoaléatoires, qui peut être physique (en lien avec l’horloge interne) ou
manuel – par saisie d’un entier de l’intervalle [0 .. 2^31-1] ; il est ainsi
possible de retrouver un mot de passe donné à partir d’un nombre entier.
Se présente enfin la possibilité de consigner l’ensemble des
données (paramètres et mot de passe) dans un fichier à l’endroit voulu,
à défaut dans (D:\ZZZ.TXT) .