{"id":2914,"date":"2017-06-08T21:54:51","date_gmt":"2017-06-08T19:54:51","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=2914"},"modified":"2017-06-08T22:16:25","modified_gmt":"2017-06-08T20:16:25","slug":"modification-des-sources-dalea-implementation","status":"publish","type":"post","link":"https:\/\/blog.nebule.org\/?p=2914","title":{"rendered":"Modification des sources d&rsquo;al\u00e9a &#8211; impl\u00e9mentation"},"content":{"rendered":"<p style=\"text-align: justify;\">Suite \u00e0 l&rsquo;article <a title=\"Modification des sources d'al\u00e9a\" href=\"http:\/\/blog.nebule.org\/?p=2907\" target=\"_blank\">Modification des sources d&rsquo;al\u00e9a<\/a>, la fonction <code>getPseudoRandom<\/code> a \u00e9t\u00e9 modifi\u00e9e dans la\u00c2\u00a0<a title=\"librairie\" href=\"http:\/\/blog.nebule.org\/?page_id=2478\" target=\"_blank\">biblioth\u00e8que<\/a> <em>PHP<\/em> orient\u00e9 objet de <a title=\"nebule\" href=\"http:\/\/www.nebule.org\" target=\"_blank\">nebule<\/a> pour ne plus consommer du tout de ressource d&rsquo;al\u00e9a mais en gardant une entropie forte.<\/p>\n<p style=\"text-align: justify;\">La g\u00e9n\u00e9ration se fait depuis une graine qui est la concat\u00e9nation de la date, de l&rsquo;heure en micro-secondes, du nom de la biblioth\u00e8que, de la version de la biblioth\u00e8que et enfin de l&rsquo;identifiant de l&rsquo;instance locale du serveur. La graine d\u00e9pendant donc surtout de l&rsquo;heure avec une grande pr\u00e9cision et est sp\u00e9cifique \u00e0 chaque serveur.<\/p>\n<p style=\"text-align: justify;\">La graine sert \u00e0 g\u00e9n\u00e9rer via une fonction de hash l&rsquo;\u00e9tat du compteur interne. Comme la taille du hash est fixe, une boucle permet d&rsquo;alimenter la sortie en d\u00e9rivant successivement l&rsquo;\u00e9tat du compteur interne. \u00c0 chaque tour de la boucle, l&rsquo;\u00e9tat du compteur interne est d\u00e9riv\u00e9 en calculant le hash de lui-m\u00eame. \u00c0 chaque tour de la boucle, on concat\u00e8ne \u00e0 la sortie le hash de l&rsquo;\u00e9tat du compteur interne concat\u00e9n\u00e9 \u00e0 une valeur fixe. L&rsquo;\u00e9tat du compteur interne n&rsquo;est jamais directement sorti et il est effac\u00e9 en fin de g\u00e9n\u00e9ration de fonction.<\/p>\n<p style=\"text-align: justify;\">Le <a title=\"bootstrap\" href=\"http:\/\/blog.nebule.org\/?page_id=2462\" target=\"_blank\">bootstrap<\/a> utilise aussi une g\u00e9n\u00e9ration pseudo al\u00e9atoire pour la cr\u00e9ation notamment d&rsquo;identifiants temporaires. La biblioth\u00e8que <em>PHP<\/em> proc\u00e9durale int\u00e9gr\u00e9e au <em>bootstrap<\/em> a aussi \u00e9t\u00e9 modifi\u00e9e. Elle fonctionne sur le m\u00eame principe d\u00e9crit ci-dessus. Une nouvelle fonction <code>__pr<\/code> est cr\u00e9\u00e9e et les fonctions ne n\u00e9cessitant par un al\u00e9a fiable ont \u00e9t\u00e9 modifi\u00e9es.<\/p>\n<p style=\"text-align: justify;\">La fonction de hash actuellement utilis\u00e9e pour la d\u00e9rivation du compteur interne et la fonction <em>sha256<\/em>. Comme on attend pas de propri\u00e9t\u00e9 cryptographique forte dans cette fonction, n&rsquo;importe quelle fonction de hash peut faire l&rsquo;affaire.<\/p>\n<p style=\"text-align: justify;\">Ce sera disponible dans la prochaine version diffus\u00e9e de la biblioth\u00e8que de <em>nebule<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suite \u00e0 l&rsquo;article Modification des sources d&rsquo;al\u00e9a, la fonction getPseudoRandom a \u00e9t\u00e9 modifi\u00e9e dans la\u00c2\u00a0biblioth\u00e8que PHP orient\u00e9 objet de nebule pour ne plus consommer du tout de ressource d&rsquo;al\u00e9a mais en gardant une entropie forte. La g\u00e9n\u00e9ration se fait depuis une graine qui est la concat\u00e9nation de la date, de l&rsquo;heure en micro-secondes, du nom &hellip; <a href=\"https:\/\/blog.nebule.org\/?p=2914\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Modification des sources d&rsquo;al\u00e9a &#8211; impl\u00e9mentation<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[395,67,3,7,13,19,20,365],"tags":[396],"_links":{"self":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2914"}],"collection":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2914"}],"version-history":[{"count":4,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2914\/revisions"}],"predecessor-version":[{"id":2918,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2914\/revisions\/2918"}],"wp:attachment":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}