Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Génération d'un mot de passe vérifiant certaines contraintes

13 réponses
Avatar
Aircamus
Bonjour =E0 tous,

Je cherche un morceau de coe permettant de g=E9n=E9rer un mot de passe
alphanum=E9rique selon les r=E8gles suivantes :

=B7 Doit contenir ou moins une lettre minuscule

=B7 Doit contenir ou moins une lettre majuscule

=B7 Doit contenir ou moins un chiffre

=B7 Doit contenir ou moins un caract=E8re sp=E9cial (i.e. un
caract=E8re faisant partie de la liste : &~"#?{([-|`_\^@)]=3D}+=B0$=A3*=B5%=
=A8 !
=A7:/ ;., ?<>=B2 )

Avez-vous une id=E9e ?

Merci d'avance :-)

3 réponses

1 2
Avatar
Vivien Barousse
Aircamus wrote:

On 16 juil, 16:02, (Christophe Franco) wrote:
Aircamus wrote:
Il faut que generatePassword prenne au hasard :
- au moins une lettre de [a-z]
- au moins une lettre de [A-Z]
- au moins un chiffre de [0-9]
- au moins un des caractères spéciaux.

Une autre contrainte su le mot de passe généré et qu'il doit être
d'une longueur comprise entre x et X. x et X seraient passés en
paramètre à generatePassword.

Par exemple on peut avoir besoin de créer un mot de passe d'une
longueur de 8 (x=8) à 10 (x) caractères avec :
- au moins une lettre de [a-z]
- au moins une lettre de [A-Z]
- au moins un chiffre de [0-9]
- au moins un des caractères spéciaux.

On obtiendrait alors par exemple au hasard 1#t5Ge{p ou aZe#5'])9 ou


Etant un débutant en Java (j'ai le niveau pour faire afficher Hello
World) je ne vois pas comment faire cela.


Je crois qu'il manque encore (et surtout) un critère sur l'aspect
"hasard" de l'algorithme, et en particulier sur sa non-prédictabilité...
Je sais que ça peut paraître évident, mais d'un point de vue
algorithmique ça ne l'est pas forcément.

--
Christophe Franco


J'ai envie de répondre peu importe :-)
Je ne vois pas ce que veut dire la non-prédictabilité. Si le passwd
est généré au hasard on ne pas prédire ce qu'il sera ?


Ce que Christophe veut dire par là (corrigez moi si je me trompe), c'est que
l'aléatoire informatique n'est pas si aléatoire que ça, et que le mot de
passe est "facilement" prévisible dans un contexte donné. C'est dû
principalement à l'implémentation du hasard informatique, et il y a de quoi
faire couler de l'encre sur le sujet. Mais je ne pense pas que cela soit le
plus important dans ce cas, si l'on se sert de la librairie mathématique de
Java.



Avatar
cfranco
Aircamus wrote:

J'ai envie de répondre peu importe :-)
Je ne vois pas ce que veut dire la non-prédictabilité. Si le passwd
est généré au hasard on ne pas prédire ce qu'il sera ?


Ce que je veux dire c'est que le hasard n'est pas forcément si hasardeux
que ça... Par exemple, certaines fonctions "random" peuvent donner des
suites de valeurs bel et bien aléatoires, mais reproductibles...

--
Christophe Franco

Avatar
Christophe Lephay
"Aircamus" a écrit dans le message de news:

Il faut que generatePassword prenne au hasard :
- au moins une lettre de [a-z]
- au moins une lettre de [A-Z]
- au moins un chiffre de [0-9]
- au moins un des caractères spéciaux.


L'algorithme qui me semble le plus simple consiste à tirer chaque caractere
aléatoirement dans une seule et unique chaine contenant tous tes caractères
(a-z, A-Z, 0-9, tes caractères spéciaux), pour soumettre à la fin le mot de
passe obtenu à une fonction qui va vérifier sa validité, et relancer le
processus tant que le mot de passe n'est pas valide.

Bien sur, le temps d'exécution n'est pas optimisé puisqu'il va falloir
"piocher" plusieurs mots de passe avant d'en trouver un qui soit valide,
mais je doute que ce soit vraiment un problème.

Je trouve la méthode d'autant plus intéressante qu'elle est facilement
adaptable, puisque seule la fonction de validation change si on souhaite
appliquer d'autres contraintes.

1 2