IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Generateur de mots de passe


Sujet :

Contribuez

  1. #21
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut Ha bon ? On ne me dit jamais rien à moi :'(
    Citation Envoyé par SpaceFrog Voir le message
    oui et non RV là les niveaux sont croissants
    Hervé ? Et moi qui croyait qu'il s'appelait Romain.



    Trèves de plaisanteries. Faire un menu à la carte ne sera jamais exhaustif étant donné que chaque propriétaire de site définit lui même ses propres règles.
    L'idéal serait de faire un truc tout à fait dynamique: caractères autorisés et en quel nombre (par types de caractères) et tailles du mot de passe. On peut paramétrer une regexp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var min = 0;
    var max = 10;
    var caracteres = "[A-Z]";
    var ma_regexp = /caracteres {min,max}/;

  2. #22
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir SPaceFrog.

    Lorsque j'ai vu ton code pour un générateur de mot de passe j'ai été assez surpris par l'usage répétitif du Math.random et cela m'a rappelé que lors de mes débuts en C j'avais un peu joué avec tout cela.

    J'ai passé mes heures de loisir de cette journée à me documenter sur Math.randon et les nombres aléatoires en JavaScript.

    Il ressort de mes lectures que Math.random ne vaut pas grand-chose comme générateur de nombre aléatoire, il existe même une différence de comportement entre les navigateurs et parfois entre les différentes versions d'un navigateur.

    Après avoir un peu joué avec tout cela, il m'est bien entendu venu l'idée de réaliser mon propre générateur de mots de passe.

    Pas de jQuery dans ce coup-là, du JavaScript pur jus !

    C'est ici : [Edit 2010-06-25 11:25] Version 1.1.0
    http://danielhagnoul.developpez.com/...motdepasse.php

  3. #23
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Pas de jQuery dans ce coup-là, du JavaScript pur jus !
    Mais qu'est-ce que c'est que cet objet Alea que je n'ai vu dans aucune doc ?

    Tout ce qui touche à la génération de l'aléatoire m'intéresse je vais chercher de la doc la-dessus tout de suite ^^

    Merci !

    edit : et de une ^^

  4. #24
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Oui Daniel je savais que random se basait sur un seed et que par conséquent il génère en fait plutot des suites que des nombres aléatoire. D'où l'introduction d'un seed aléatoires dans le random et récupérant les millisecondes au moment du click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myrand=new Date().getMilliseconds();
    Math.random(myrand)
    Ceci étant tu m'apprends également l'existence de alea()
    il ne le reste plus qu'à aller jacqueter à l'est

    Je vais donc me pencher sur cette nouveauté et revoir ma copie en fonction.

    pour cette decouverte


    Daniel,
    Tu as réintégré Mash() dans Alea.js ? Moi j'ai été obligé car il ne va pas cherche la fonction tout seul

  5. #25
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    voici la version avec Alea de Johannes Baagøe -- baagoe@baagoe.com, 2010 http://baagoe.com/en/RandomMusings/javascript/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    <script charset="utf-8" src="lib/Alea.js"></script>
    <title>Password Generator</title>
    <style type="text/css">
    body, html {
    	height:100%;
    	width:100%;
    	overflow:hidden;
    	}
    body{
    	background-color: #8FB480;
    	color: #025D02;}
    #cont {
    	width:450px;
    	margin:20px auto;
    	border: solid 2px #194308;
    	height:auto;
    	overflow:hidden;
    	}
     
    .label {width : 150px;
    		 float:left;
    		 padding:5px 0 15px 15px;
    		 }
     
    .label, h3 { font-family:verdana;
            }
    .field {
    	width: 100%;
    	background-color: #9EEE91 ;
    	padding : 5px 0;
    	float:left;
    	}
    #lon {
    		width:30px;
    		text-align:right;
    		}	
    #res {
    		width:250px;
    		font-family:consolas,dina,arial ;
    		font-size:15px;
    		text-align:center;
    		letter-spacing: 2px;}
    .last,h3 {text-align:center;}	
    </style>
    <script type="text/javascript">
    //<![CDATA[
    /********************************************************
    *                SpaceFrog 20.06.2010                   *
    *            generateur de mots de passe                *
    * utilise le générateur de nombres aléatoires           *
    * Alea de Johannes Baagøe -- baagoe@baagoe.com, 2010   *
    * http://baagoe.com/en/RandomMusings/javascript/        *
    ********************************************************/
     
    var Mash = function() {
      var c = 1;
      var h = 0;
     
      var hash = function(data) {
        var norm32 = 2.3283064365386963e-10; // 2^-32
        var a = 2087133;
     
        data = data.toString();
     
        for (var i = 0; i < data.length; i++) {
          h = a * (h + (data.charCodeAt(i) + c) * norm32); // 2^-32
          h -= (c = h | 0);
        }
        h = a * (h + c * norm32);
        return h -= (c = h | 0);
      };
     
      hash.version = 'Mash 0.8';
      return hash;
    };
        var random = new Alea();
        // retourne X tel que : min <= X <= max
        function intRandom(min, max){
            return Math.floor(random() * (max - min + 1) + min);
        }
     
    var chars=new Array( "abcdefghijklmnopqrstuvwxyz".split(''),"abcdefghijklmnopqrstuvwxyz".toUpperCase().split(''),"0123456789".split(''),"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~".split(''));
    function generate(){
    var level=+document.getElementById('niveau').value
    var long=+document.getElementById('lon').value
    if(long<level){alert('La longueur doit être au moins égale au niveau.');
                   return false;}
     
    var rep=new Array();
     
     
    while(level>1){ 
    	templong=intRandom(1,long-(--level)) ;
    	rep.push(templong);
    	long=long-templong;
    	}
    	rep.push(long)
     
    var password=new Array();
    var i=-1;
    while(rep[++i]){
    	BaseL=chars[i].length-1
    	j=-1;
    	while((j++<rep[i]-1) && (password.push (chars[i][intRandom(0,BaseL)]))){}
    	}
    document.getElementById('res').value=password.sort(sortRand).reverse().sort(sortRand).sort(sortRand).reverse().join('')
    }
    function sortRand(){return intRandom(-1,1); }
    //]]>
    </script>
    </head>
    <body>
    <div id="cont">
    <div class="field"><h3>SpaceFrog's password generator</h3></div>
    <div class="field"><span class="label">Niveau :</span><select id="niveau">
    	<option value='1'>1</option>
    	<option value='2'>2</option>
    	<option value='3'>3</option>
    	<option value='4'>4</option>
    </select></div>
    <div class="field"><span class="label">Longueur :</span><input type='text' id='lon' value='6' maxLength='2'/></div>
    <div class="field"><span class="label">Mot de passe:</span><input type='text' id='res' value='' readonly="readonly" /></div>
    <div class="last field"><input type="button" onclick="generate()" value = "generation" /></div>
    </div>
    <input type='button' onclick="this.value=sortRand()" />
    </body>
    </html>
    Je constate une meilleure répartition des types de caractères:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Cb~ouP9j
    (w2AMm3e
    0fHaF:tw
    vpr3^Cn7
    7gIY2N-h
    v2w5mNm)
    qsTJiO6'
    LP2q,9KX
    T,EHx8XF
    !8/iV{YX
    *D;]7JXo
    mr)x1iNo
    Muu|8<+)
    0O0uy`kH
    HMn1xe-v
    (1HICW;x
    sWh1Z_1P
    Ji[yGc4h
    Azhu299(
    ]kD5kwlI
    2z}Ak@|j
    FO6Tr(Z8
    \wq6uCBF
    8U`hOoST
    ~xWw1xqp
    ;S4cfjP+
    L8l69+16
    &!iE6fyP
    2PA4S`Vl
    j@Z*#_7h
    !6}|4E6d
    7V"JZXz1
    P!f4?JYL
    a1r1T{2s
    E9>e{eID
    .Q~HcR2/
    JmX5D-hE
    :m4mchmF
    bnGo7ns?
    E64_=b0P
    ac}b0f,J
    fI|y4fwj
    jlO7vrl,
    FSZV4@s;
    19WyNzp.
    k5jaz|QM
    *pmGmhF1
    U[st1PQ8
    GcO4S@9H
    @>bE{79v
    zd/11BH4
    p86HHE6"
    k7llsEc%
    9KX2Ah-P
    keVDo?8Y
    bzp|7mUf
    O?n.g7tr
    r5'490Dr
    r4W/RI(I
    Qnjx@cp7

  6. #26
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Vous me donnez l'impression de ne pas avoir lu les commentaires du code et de ne pas avoir regardé les codes sources de la page ?

    Ce sont pourtant les premières choses que je fais lorsque je découvre le travail d'une autre personne.

    Le lien vers Alea est dans le commentaire de la fonction motdepasse() qui est donné en bas de la page web.

    Il suffit d'éditer le code source de ma page et puis de cliquer sur le lien JavaScript pour obtenir le code source de la fonction Alea qui inclut bien Mash.

    Alea est un pseudo random avec seed date par défaut, mais on peut lui donner le seed que l'on veut. Et on peut récupérer le seed utilisé par random.args. À première vue, Alea offre des possibilités et des performances qui me rappellent mes très lointains exercices en C. J'ai choisi de travailler avec Alea mais il y a des concurrents.

    Le problème de Math.random est surtout de ne pas être assez aléatoire en général et de ne pas être uniformément aléatoire sur les différents navigateurs.

  7. #27
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    curieux dans le zip que j'ai téléchargé Ales.js ne comporte par mash...

    Vous me donnez l'impression de ne pas avoir lu les commentaires du code et de ne pas avoir regardé les codes sources de la page ?
    Je suis de ceux qui ne lisent pas les modes d'emploi

  8. #28
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    curieux dans le zip que j'ai téléchargé Ales.js ne comporte par mash...


    Je suis de ceux qui ne lisent pas les modes d'emploi
    Je n'ai pas dû être assez clair dans mes indications, avez-vous des suggestions pour les améliorer ?
    (Bon, à part les réécrire en français... en guise de plate excuse, ce n'est pas ma langue maternelle.)

    À part ça, il y a une nouvelle version. C'est surtout Mash.js qui a changé, la nouvelle fonction de hachage est bien meilleure. Vous pouvez du reste la tester ici :
    http://baagoe.com/en/RandomMusings/hash/avalanche.xhtml

    Le générateur de nombres pseudo-aléatoires Alea, lui, est resté pareil.

    Excusez-moi si je commets des impairs dans l'utilisation de ce forum, j'ai plutôt l'habitude d'Usenet.

    --
    Johannes

  9. #29
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas dû être assez clair dans mes indications, avez-vous des suggestions pour les améliorer ?
    (Bon, à part les réécrire en français... en guise de plate excuse, ce n'est pas ma langue maternelle.)
    Heu non ... vu que je ne lis pas les commentaires alors à moins de trouver une méthode en intraveineuse ou télépathique
    Pour ce qui est de ton français il est tout a fait compréhensible pour peu qu'on se donne la peine de le lire. Et ce n'est pas non plus ma langue maternelle, alors bienvenue au club

  10. #30
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Citation Envoyé par johannesb Voir le message
    [...] il y a une nouvelle version. C'est surtout Mash.js qui a changé, la nouvelle fonction de hachage est bien meilleure. Vous pouvez du reste la tester ici :
    http://baagoe.com/en/RandomMusings/hash/avalanche.xhtml

    Le générateur de nombres pseudo-aléatoires Alea, lui, est resté pareil. [...]
    Je suis très heureux de vous accueillir sur developpez, et vous remercie pour Alea. Un must !

    Je trouve votre français très bon.

    À titre personnel, j'apprécie beaucoup votre travail sur les nombres aléatoires et je pense qu'il devrait être publié sous forme de tutoriel afin d'en faire profiter la francophonie.

    Si vous soumettiez un projet, je le soutiendrais auprès des responsables de developpez. N'ayez crainte pour le français, il y a des relecteurs et des correcteurs disponibles.

  11. #31
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Je suis très heureux de vous accueillir
    sur developpez, et vous remercie pour Alea. Un must !
    Merci !

    Javascript pose des problèmes particuliers à la génération de
    nombres aléatoires, parce que ses nombres sont toujours en
    virgule flottante. Il n'y a pas la congruence automatique modulo 2
    puissance la taille des entiers de la plupart des autres langages. Du
    coup, beaucoup d'algorithmes classiques ne fonctionnent pas du tout,
    et d'autres deviennent très lents. Il a fallu innover

    Par ailleurs, il ne faudrait jamais utiliser Math.random pour quoi que
    ce soit de sérieux. C'est suffisant pour de petites animations ou des
    jeux sans importance, mais s'il s'agit de simuler des conditions de
    panne dans un réacteur nucléaire, ce serait de la folie !

    Ici, pour un générateur de mots de passe, le principal problème de
    Math.random, c'est qu'un candidat à l'intrusion qui sait sur quel
    genre de plate-forme et à peu près à quel moment le mot de passe
    a été construit n'aura pas besoin de tant d'essais que ça pour le
    trouver. L'initialisation de l'état interne de Math.random se fait,
    au mieux, avec une granularité d'une milliseconde, or, il n'y a jamais
    que 3 600 000 millisecondes par heure... alors que même si l'on ne
    prend que 8 lettres au hasard parmi les 26 minuscules, ça fait déjà
    Math.pow(26, 8) == 208 827 064 576 possibilités. Autrement dit, on peut
    trouver beaucoup plus vite qu'en essayant toutes les possibilités.

    Je trouve votre français très bon.
    Je crois que je me débrouille Mais en général, vu que je n'ai pas
    de raison particulière de préférer le français, j'écris plutôt
    en anglais quand il s'agit de sujets informatiques. (Pour les curieux,
    je suis danois, et comme nous sommes très peu nombreux à parler notre
    langue maternelle, nous sommes bien obligés d'en apprendre d'autres si
    nous ne voulons pas fonctionner en vase clos.)

    À titre personnel, j'apprécie beaucoup votre travail sur les
    nombres aléatoires et je pense qu'il devrait être publié sous forme
    de tutoriel afin d'en faire profiter la francophonie.
    Je vais au moins penser à le traduire en français sur mon site, une
    fois qu'il est fini en anglais... ce qui est pour le moment loin d'être
    le cas. C'est un vaste sujet, et assez fascinant, je trouve.

    Une petite question philosophique pour remuer les neurones : c'est quoi,
    au juste, un nombre aléatoire ? Est-ce que 73971 est plus aléatoire
    que 12345 ? Y aurait-il un nombre plus aléatoire que tous les autres ?
    Mais si c'était le cas, est-ce que ça ne le rendrait pas, justement
    et du coup, pas aléatoire du tout ?

    --
    Johannes

  12. #32
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Citation Envoyé par johannesb Voir le message
    Une petite question philosophique pour remuer les neurones : c'est quoi,
    au juste, un nombre aléatoire ? Est-ce que 73971 est plus aléatoire
    que 12345 ? Y aurait-il un nombre plus aléatoire que tous les autres ?
    Mais si c'était le cas, est-ce que ça ne le rendrait pas, justement
    et du coup, pas aléatoire du tout ?

    --
    Johannes
    Bonjour et bienvenue,

    Tout dépend de la définition du mot aléatoire qui en français peut vouloir dire:

    imprévisible
    Dans ce cas-là, 1234 n'est pas imprévisible, tout comme 0000 qui, sont utilisés souvent par paresse ou par souci de mémorisation.
    On pourrait se dire aussi qu'aléatoire est de ne pas obtenir deux fois la même chose. Or ce ne serait plus aléatoire mais exclusif.
    Bref, nous pourrions discourir longuement sur cette question. Retenons-en simplement que aléatoire fait référence au pur hasard. Et comme:

    Citation Envoyé par Expression française

    Le hasard fait bien les choses.
    aléatoire devient alors un objectif bien précis à obtenir et qui n'est donc plus du hasard. Cet objectif dépend bien évidemment de chaque contexte. Ici, notre but de l'aléatoire serait de ne pas obtenir 1234 ni toujours 75628.

  13. #33
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Merci johannesb pour ton travail sur le sujet, qui est vraiment précieux et mérite tout notre respect.

    Citation Envoyé par johannesb Voir le message
    Une petite question philosophique pour remuer les neurones : c'est quoi,
    au juste, un nombre aléatoire ? Est-ce que 73971 est plus aléatoire
    que 12345 ? Y aurait-il un nombre plus aléatoire que tous les autres ?
    Mais si c'était le cas, est-ce que ça ne le rendrait pas, justement
    et du coup, pas aléatoire du tout ?
    He he ^^ la question est élégamment formulée et ne manque pas de sens poétique, mais je crois que, sur le plan philosophique, toute l'essence de ta question repose sur l'emploi, ici un peu impropre, du terme "nombre". Dans cette question, il signifie en fait, par métonymie, "génération de nombre". Car c'est bien le processus de génération du nombre qui est aléatoire. Tant que ce processus n'a pas eu lieu, le nombre qui sera généré n'est "pas encore" un nombre... (à la rigueur un faisceau de probabilités ? )

    En résumé, ne confondons pas les qualités objectives (pair ou positif par exemple), qui sont déductibles de l'objet seul et les qualités subjectives (grand, aléatoire, connu) qui n'existent qu'à travers le rapport qu'entretient l'objet avec un sujet donné.

    (cela dit, le nombre "42" est quand même nettement plus aléatoire que les autres )

  14. #34
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut Quelques remarques générales...
    1. Les "//<![CDATA[" ... "//]]>" entourant le code dans un élément
    <script> ne servent à rien, leur répétition rituelle est tout à
    fait inutile et ne fait qu'embrouiller les choses. Il les fallait
    il y a longtemps quand certains navigateurs ne connaissaient pas
    l'existence de scripts, mais je pense qu'on peut négliger Mosaic en
    2010 Si vos visiteurs sont censés lire de l'UTF-8 ou quoi que ce
    soit qui fasse appel au DOM, ils sauront aussi lire des éléments
    <script> tout simples, sans CDATA.

    2. Ça ne sert à rien de donner un argument à Math.random, l'argument
    n'a pas pour effet d'initialiser quoi que ce soit, il est
    purement et simplement ignoré. Vous pouvez le vérifier facilement
    en essayant d'appeler plusieurs fois Math.random(33) ("Dites 33 !"),
    vous verrez que ça ne rend pas les mêmes résultats.
    (Ou, si vous avez du courage, vous pouvez vérifier dans la norme :
    http://www.ecma-international.org/pu...a-262-arch.htm,
    section 15.8.2.14.)

    3. C'est sympa d'utiliser ma fonction Alea, mais si c'est
    pour l'initialiser avec un argument vide, elle prend la date en
    millisecondes et devient tout aussi vulnérable que Math.random !

    Il faudrait l'initialiser avec une valeur vraiment aléatoire,
    par exemple obtenue sur http://www.random.org/, ou, si
    vous êtes sous Linux, /dev/random. (Si ça intéresse quelqu'un,
    je peux expliquer ce dernier cas avec plus de détails.) Ici, ce
    que vous pouvez faire, c'est demander à l'utilisateur d'entrer
    une "graine" qui servira d'argument à Alea, à charge pour lui
    d'en trouver une qui soit suffisamment peu prévisible.

    4. Il n'est pas interdit d'avoir des répétitions de caractères
    dans un mot de passe, au contraire, leur évitement systématique
    diminue la sécurité !

    Autrement dit : plutôt que mélanger l'ensemble des caractères comme
    si c'était un jeu de cartes et sélectionner ensuite les n premiers,
    piochez dedans au hasard, avec remise. Genre, en supposant une
    graine convenable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      var random = Alea(graine);
     
      function motDePasse(longueur) {
        var chars = 
         '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
        var mdp = '';
     
        while (longueur-- > 0) {
          mdp += chars.charAt(Math.floor(random() * chars.length));
        }
     
        return mdp;
      }
    C'est pas plus simple ?

    --
    Johannes

  15. #35
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    En résumé, ne confondons pas les qualités objectives (pair ou positif par exemple), qui sont déductibles de l'objet seul et les qualités subjectives (grand, aléatoire, connu) qui n'existent qu'à travers le rapport qu'entretient l'objet avec un sujet donné.
    Ah, bravo, c'est parfait !

    Serions-nous collègues ? Je suis prof de philo, de formation...

    Au passage, un autre bravo pour le générateur de phrases. Elle
    vient de me trouver "Anselme de Cantorbéry jure de labourer le neurone."
    (Bon, j'avais un peu aidé pour le sujet).

    --
    Johannes

  16. #36
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par johannesb Voir le message
    Ah, bravo, c'est parfait !

    Serions-nous collègues ? Je suis prof de philo, de formation...

    Au passage, un autre bravo pour le générateur de phrases. Elle
    vient de me trouver "Anselme de Cantorbéry jure de labourer le neurone."
    (Bon, j'avais un peu aidé pour le sujet).

    --
    Johannes
    Merci du compliment ^^ c'était ma première formation, j'ai une licence (spécialité philo du langage) qui date un peu mais dont je n'ai pas encore totalement oublié les bons enseignements

    >>> je vais rajouter Saint-Anselme dans ma liste de noms propres j'avais déjà Saint-Augustin, mais il se sentait un peu seul, ça lui fera de la compagnie

  17. #37
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par vermine Voir le message
    aléatoire devient alors un objectif bien précis à obtenir et qui n'est donc plus du hasard.
    C'est paradoxal, mais tout à fait exact : la génération de nombres aléatoires
    est une affaire trop sérieuse pour être laissée au hasard... (je crois bien
    que c'est Donald Knuth qui a fait cette remarque en premier).

  18. #38
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    2. Ça ne sert à rien de donner un argument à Math.random, l'argument
    n'a pas pour effet d'initialiser quoi que ce soit
    Merci pour l'info ...
    J'avais toujours entendu dire qu'en lui rajoutant un seed on sortait d'une attribution en série pour attribuer une graine aléatoire supplémentaire et en particulier en se basant sur un getMilliseconds, mais si c'est déja le cas à la base.
    Pour ce qui est de le vérifier ça me parait assez compliqué, il est évident qu'un Math.random(33) ne retoure pas toujours la même chose... un nombre aléatoire fixe n'aurait pas de sens ^^.
    La question serait plutot de savoir si Math.random(33) retourne la même chose que Math.random(). Peut on le vérifier ? Je ne vois pas comment si la fonction random a son seed de base calé sur les millisecondes du système, commenta lancer les deux random simultanément.
    Et d'ailleurs est ce que cela veut dire que deux randoms lancés simultanément pour autant que cela serait possible donneraient le même resultat ???

  19. #39
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Ne comprenant pas grand chose à la brillante discussion ci-dessus, j'ajoute quand même que le résultat de Math.random() me paraît imprévisible et que les chances de tirage d'un élément dans un ensemble sont équivalentes pour tous les éléments... (mon français n'est pas très clair parce que c'est la fin de l'année scolaire);

    mais évidemment, je ne travaille pas dans une centrale nucléaire... et puis le rapport avec javascript, alors là...

  20. #40
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    J'avais toujours entendu dire qu'en lui
    rajoutant un seed on sortait d'une attribution en série pour attribuer
    une graine aléatoire supplémentaire et en particulier en se basant
    sur un getMilliseconds, mais si c'est déja le cas à la base.
    Dans d'autres langages, mais pas en javascript, il y a une fonction
    `srand` ou `srandom` qui permet d'initialiser le générateur
    "standard". Si l'on appelle cette fonction, la suite des nombres
    retournés par la fonction `rand` ou `random` est complètement
    déterminée par l'argument donné à la fonction d'initialisation. De
    cette façon, il est possible de reproduire des résultats pour voir
    ce qui a pu clocher.

    Il est peut-être assez naturel de penser qu'un argument donné à
    Math.random ait le même effet. Mais ce n'est pas le cas, la norme
    est très claire à ce sujet.

    Pour ce qui est de le vérifier ça me parait assez compliqué,
    il est évident qu'un Math.random(33) ne retoure pas toujours la même
    chose... un nombre aléatoire fixe n'aurait pas de sens ^^.
    Si Math.random(33) avait le même effet que, disons, la suite
    d'instruction "srand(33); rand()" en Perl, elle donnerait toujours
    le même résultat, du moins sur la même plate-forme. Ce n'est pas
    le cas.

    Ça n'empêche pas, en Perl, que les appels sucessifs à rand
    soient convenablement pseudo-aléatoires.

    La question serait plutot de savoir si Math.random(33) retourne
    la même chose que Math.random().
    Si le moteur javascript est conforme aux normes ECMA, oui.

    Peut on le vérifier ?
    Consulter les sources... Sinon, en effet, c'est difficile.

    est ce que cela veut dire que deux randoms lancés
    simultanément pour autant que cela serait possible donneraient le
    même resultat ???
    Sur la même plate-forme, oui.

    C'est un des problèmes de Math.random, celui qui est le plus gênant
    dans une appli de génération de mots de passe. Un "pirate" qui a une
    idée à peu près exacte de la date et de l'heure où elle a été
    lançée a relativement peu de possibilités à essayer.

    --
    Johannes

Discussions similaires

  1. [phpMyAdmin] [phpMyAdmin] Problème mot de passe Root !
    Par StouffR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 26/09/2014, 11h59
  2. Réponses: 7
    Dernier message: 08/06/2010, 03h27
  3. [VB6] [ADO] [Access] Changer le mot de passe
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/03/2003, 09h45
  4. Réccupération du mot de passe d'une connexion
    Par zinaif dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2002, 18h32
  5. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo