{"id":181,"date":"2012-07-16T21:09:52","date_gmt":"2012-07-16T19:09:52","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=181"},"modified":"2016-03-29T19:05:03","modified_gmt":"2016-03-29T17:05:03","slug":"place-de-lhorodatage-dans-le-lien","status":"publish","type":"post","link":"http:\/\/blog.nebule.org\/?p=181","title":{"rendered":"Agencement du registre de lien"},"content":{"rendered":"<p>La forme du lien est-elle optimale?<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800080;\">Signature<\/span><\/code><\/p>\n<p>Avec\u00c2\u00a0<code><span style=\"color: #008000;\">HashCible<\/span><\/code> et <code><span style=\"color: #008080;\">HashMeta<\/span><\/code> facultatifs.<\/p>\n<p style=\"text-align: justify;\">Le\u00c2\u00a0<code><span style=\"color: #0000ff;\">Signataire<\/span><\/code> et la\u00c2\u00a0<code><span style=\"color: #800080;\">Signature<\/span><\/code> (obligatoirement pr\u00e9sente mais \u00e9ventuellement nulle) sont deux \u00e9l\u00e9ments indissociables et <em>\u00e0 la fin<\/em>. Ils valident ainsi le (reste du) lien.<!--more--><\/p>\n<p style=\"text-align: justify;\">Mais ils pourraient tout aussi bien \u00eatre au d\u00e9but, \u00e0 la fa\u00e7on d&rsquo;une ouverture de trame. Leur pr\u00e9sence serait ainsi logique juste apr\u00e8s le <code><span style=\"color: #800000;\">TimeStamp<\/span><\/code>&#8230; ou juste avant.<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800080;\">Signature<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">Il y a par contre un champ qui a tout int\u00e9r\u00eat \u00e0 \u00eatre \u00e0 un extr\u00eame de la ligne, c&rsquo;est la <span style=\"color: #800080;\"><code>Signature<\/code><\/span>. Celle-ci est calcul\u00e9e sur tout le lien sauf elle-m\u00eame, n&rsquo;\u00e9tant pas connu au moment de cr\u00e9er l&#8217;empreinte du lien. Elle est dans ce cas calcul\u00e9e avec un champ\u00c2\u00a0soit vide soit avec une valeur pr\u00e9d\u00e9finie (nulle). Ca tombe bien, ce champ est justement obligatoire, m\u00eame avec une valeur nulle. Il faut donc pr\u00e9positionner cette valeur lorsque l&rsquo;on calcule la signature.<\/p>\n<p style=\"text-align: justify;\">Autre avantage \u00e0 placer le <code><span style=\"color: #0000ff;\">Signataire<\/span><\/code> et la <code><span style=\"color: #800080;\">Signature<\/span><\/code> en d\u00e9but de lien, c&rsquo;est qu&rsquo;il est plus facile de travailler sur les diff\u00e9rents champs HashXxxxxx si les deux derniers sont facultatifs.<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #800080;\">Signature<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">C&rsquo;est humainement un peu plus lisible, empil\u00e9s les uns sur les autres. Mais est-ce que \u00e7a a de l&rsquo;importance ? Qui consultera les liens brute de fonderie ?<\/p>\n<p style=\"text-align: justify;\">Mettre la <span style=\"color: #800080;\"><code>Signature<\/code><\/span> en d\u00e9but de ligne et non en fin, c&rsquo;est aussi un inconv\u00e9nient. Lorsque l&rsquo;on aura une grande quantit\u00e9 de signatures \u00e0 v\u00e9rifier, et qu&rsquo;il faudra pr\u00e9positionner cette signature pour la recalculer, changer le premier caract\u00e8re en 0 et d\u00e9finir le deuxi\u00e8me comme la fin de ligne est plus rapide que de r\u00e9-\u00e9crire tous les caract\u00e8res de la signature. En plus, il faut dans le deuxi\u00e8me cas d\u00e9placer tous les champs de quelques caract\u00e8res vers la droite&#8230;<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800080;\">0<\/span><span style=\"color: #808080;\">ignature<\/span><br \/>\n<span style=\"color: #800080;\">0<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><span style=\"color: #808080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">On peut utiliser une autre m\u00e9thode, pour les langages de programmation qui le supportent. Cette ligne de caract\u00e8res repr\u00e9sentant le lien sera s\u00fcrement stock\u00e9 en m\u00e9moire sous forme d&rsquo;un tableau de caract\u00e8res. ce tableau est rep\u00e9r\u00e9 par un pointeur en m\u00e9moire. Il suffit d&rsquo;\u00e9crire un <code>0<\/code> sur le dernier caract\u00e8re de la signature et de changer le pointeur vers ce <code>0<\/code>.<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #808080;\">Signatur<\/span><span style=\"color: #800080;\">0<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">On aura toujours beaucoup plus de liens \u00e0 v\u00e9rifier que de liens \u00e0 signer.<\/p>\n<p style=\"text-align: justify;\">A moins qu&rsquo;il ne soit pr\u00e9f\u00e9rable de remplacer la signature pour sa v\u00e9rification par&#8230; rien&#8230; ce qui est encore plus rapide car c&rsquo;est juste un changement de pointeur.<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #808080;\">Signature<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">Ensuite, apr\u00e8s la <code><span style=\"color: #800080;\">Signature<\/span><\/code>, faut-il mettre le <code><span style=\"color: #800000;\">TimeStamp<\/span><\/code> ou le <code><span style=\"color: #0000ff;\">Signataire<\/span><\/code> ?<\/p>\n<p style=\"text-align: justify;\">Le <code><span style=\"color: #800000;\">TimeStamp<\/span><\/code> est une valeur assez relative, surtout d&rsquo;une entit\u00e9 \u00e0 l&rsquo;autre. Pour pouvoir r\u00e9ellement exploiter le <code><span style=\"color: #800000;\">TimeStamp<\/span><\/code>, il faut de tout fa\u00e7on conna\u00eetre l&rsquo;entit\u00e9, c&rsquo;est \u00e0 dire le <code><span style=\"color: #0000ff;\">Signataire<\/span><\/code>.<\/p>\n<p style=\"text-align: justify;\">le champ <code><span style=\"color: #ff6600;\">Action<\/span><\/code> d\u00e9crit comment va \u00eatre interpr\u00e9t\u00e9 le reste des champs. Dans le lien, il est le lien entre la partie entit\u00e9, celui qui parle, et la partie contenu, ce qu&rsquo;il dit.<\/p>\n<p style=\"text-align: justify;\">Enfin, les derniers champs ont un ordre impos\u00e9. <code><span style=\"color: #808000;\">HashSource<\/span><\/code> est obligatoire. <code><span style=\"color: #008000;\">HashCible<\/span><\/code> et <code><span style=\"color: #008080;\">HashMeta<\/span><\/code> sont facultatifs. Cependant, si il n&rsquo;y a qu&rsquo;un seul champ apr\u00e8s le <code><span style=\"color: #808000;\">HashSource<\/span><\/code>, c&rsquo;est forc\u00e9ment un <code><span style=\"color: #008000;\">HashCible<\/span><\/code>.<\/p>\n<p style=\"text-align: justify;\">La forme finale du registre de lien :<\/p>\n<p style=\"text-align: center;\"><code><span style=\"color: #800080;\">Signature<\/span>-<span style=\"color: #0000ff;\">Signataire<\/span>-<span style=\"color: #800000;\">TimeStamp<\/span>-<span style=\"color: #ff6600;\">Action<\/span>-<span style=\"color: #808000;\">HashSource<\/span>-<span style=\"color: #008000;\">HashCible<\/span>-<span style=\"color: #008080;\">HashMeta<\/span><\/code><\/p>\n<p style=\"text-align: justify;\">Quelques questions encore en attente :<\/p>\n<ul>\n<li>Le registre de lien doit-il \u00eatre en ASCII et rester lisible par des humains? Ou \u00eatre encod\u00e9 en binaire et n\u00e9cessiter un programme sp\u00e9cifique pour simplement le lire?<\/li>\n<li>Le s\u00e9parateur \u00ab\u00a0&#8211;\u00a0\u00bb de champs est-il opportun ?<\/li>\n<li>Quel s\u00e9parateur(s) de liens ? Espace ? CR ? CR LF ?<\/li>\n<li>Les champs <code><span style=\"color: #008000;\">HashCible<\/span><\/code> et <code><span style=\"color: #008080;\">HashMeta<\/span><\/code> restent-ils optionnels ou sont-ils obligatoires aussi mais potentiellement nuls ? Simplicit\u00e9 de traitement&#8230;<\/li>\n<li>Quel est la compressibilit\u00e9 des liens ? Quel gain de taille peut-on attendre lors d&rsquo;un transfert avec compression ?<\/li>\n<li>Doit-on faire pr\u00e9c\u00e9der les hashs de son type? MD5? SHA? &#8230;<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>La forme du lien est-elle optimale? TimeStamp-Action-HashSource-HashCible-HashMeta-Signataire-Signature Avec\u00c2\u00a0HashCible et HashMeta facultatifs. Le\u00c2\u00a0Signataire et la\u00c2\u00a0Signature (obligatoirement pr\u00e9sente mais \u00e9ventuellement nulle) sont deux \u00e9l\u00e9ments indissociables et \u00e0 la fin. Ils valident ainsi le (reste du) lien.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[99,24],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/181"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=181"}],"version-history":[{"count":1,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":2357,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/181\/revisions\/2357"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}