Génération d'un mot de passe vérifiant certaines contraintes
13 réponses
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 )
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.
Aircamus wrote:
On 16 juil, 16:02, cfra...@pobox.com (Christophe Franco) wrote:
Aircamus <romuald.vi...@gmail.com> 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
1uI_d8fQ@S.
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.
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.
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
Aircamus <romuald.vieux@gmail.com> 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...
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
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.
"Aircamus" <romuald.vieux@gmail.com> a écrit dans le message de news:
1184601113.367248.19410@n2g2000hse.googlegroups.com...
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.
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.