{"id":5826,"date":"2025-12-14T11:12:54","date_gmt":"2025-12-14T10:12:54","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=5826"},"modified":"2026-02-18T16:57:49","modified_gmt":"2026-02-18T15:57:49","slug":"hash_simple","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/hash_simple\/","title":{"rendered":"TP6_C Hash_simple"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\ud83d\udd52 : 3 h maximum<\/p>\n\n\n\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#prerequis\">Pr\u00e9requis:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#but\">But:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#code-de-hash-simple\">Code de hash simple <\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#compiler-ce-code-et-avec-le-gdb-comprendre-l-algorithme-de-ce-hash\">Compiler ce code et avec le GDB comprendre l&rsquo;algorithme de ce HASH<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#on-va-etudier-la-fonction-main-int-argc-char-argv\">On va \u00e9tudier la fonction main(int argc, char **argv) <\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#si-argc-est-different-de-2\">Si argc est diff\u00e8rent de 2 <\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#expliquer-pourquoi-argc-peut-etre-different-de-2-et-comment\">expliquer pourquoi argc peut \u00eatre diff\u00e8rent de 2 et comment ?<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#fprintf-et-stderr\">fprintf et stderr<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#a-l-aide-du-man-fprintf-et-du-man-stderr-determiner-ce-que-represente-stderr\">A l&rsquo;aide du man fprintf  et du man stderr  d\u00e9terminer ce que repr\u00e9sente stderr<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#pourquoi-avoir-choisi-ce-type-pour-faire-un-hash\">Pourquoi avoir choisi ce type pour faire un hash ?<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#donner-le-role-de-ld-et-lx-dans-notre-code\">Donner le role de %ld et %lx dans notre code <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#p-0-sert-a-determiner-quoi-aidez-vous-de-gdb\">(*p != &lsquo;\\0&rsquo;) , sert \u00e0 d\u00e9terminer quoi ?  (aidez vous de gdb)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#l-algorithme-du-hash-hash-prime-unsigned-long-int-p\">L&rsquo;algorithme du hash = (hash * prime) + (unsigned long int)(*p);<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#comment-evolue-le-hash\">comment \u00e9volue le hash ?<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#si-prime-vaut-1\">si prime vaut 1 <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#si-prime-vaut-31\">si prime vaut 31<\/a><\/li><\/ol><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#mot-de-passe\">Mot_de_passe<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#le-hacker\">Le hacker !<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#pour-securiser-utilisons-le-hash-simple\">Pour s\u00e9curiser utilisons le hash simple !<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/#conclure-sur-le-hash\">Conclure sur le hash<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 id=\"prerequis\" class=\"wp-block-heading\">Pr\u00e9requis:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cours sur les chaines de caract\u00e8res (string) <\/li>\n\n\n\n<li>Les TP de C  pr\u00e9c\u00e9dents<\/li>\n\n\n\n<li>utilisation de <a href=\"https:\/\/workboot.fr\/ciela\/gdb\/\">gdb<\/a> permet de comprendre l\u2019int\u00e9rieur du code !<\/li>\n\n\n\n<li>cours sur <a href=\"https:\/\/workboot.fr\/ciela\/hash-en-c\/\" type=\"page\" id=\"5783\">hash en C<\/a> <\/li>\n<\/ul>\n\n\n\n<h2 id=\"but\" class=\"wp-block-heading\">But:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compr\u00e9hension d&rsquo;un hash<\/li>\n\n\n\n<li>Manipulation de cha\u00eene sans utiliser la notion de tableau avec des  []<\/li>\n\n\n\n<li>Collision sur les hashs, utilisation d&rsquo;un nombre premier \u00e9lev\u00e9 !<\/li>\n<\/ul>\n\n\n\n<h2 id=\"code-de-hash-simple\" class=\"wp-block-heading\">Code de hash simple <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">le hash permet de s\u00e9curiser un mot de passe par exemple ! dans la conclusion vous expliquerez cela \u00e0 la fin du TP<\/p>\n\n\n\n<h3 id=\"compiler-ce-code-et-avec-le-gdb-comprendre-l-algorithme-de-ce-hash\" class=\"wp-block-heading\">Compiler ce code et avec le GDB comprendre l&rsquo;algorithme de ce HASH<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include&lt;stdlib.h>\n#include&lt;stdio.h>\n\n\/* Fonction du hash_simple       *\/\n\/* Entr\u00e9e: chaine de caract\u00e8res  *\/\n\/* Sortie: un long int (64 bits) *\/\n\nunsigned long int hash_simple(const char *str)\n{\n    unsigned long int hash = 0;\n    const unsigned long int prime = 1; \/* 31 ou un nombre premier plus \u00e9lev\u00e9 est pr\u00e9f\u00e9rable *\/\n    const char *p;\n    \n    if (str == NULL)   \/* cas ou pas de chaine *\/\n    {\n        return 0;\n    }\n    \n    p = str;\n    while (*p != '\\0')\n    {\n        hash = (hash * prime) + (unsigned long int)(*p);\n        p++;\n    }\n    return hash;\n}\n\/**************************************************************************************************\/\nint main (int argc, char **argv)\n{\nif (argc!=2) \n\t{\n\t\tfprintf(stderr, \"Aucune chaine fournie.\\n\");\n\t\tfprintf(stderr, \"syntaxe: .\/hash_simple \\\"chaine de caract\u00e8re\\\"\\n\");\n\t\treturn EXIT_FAILURE;\n\t}\n\/* ici argv[1] contient une chaine a hacher *\/\nprintf (\"Le hash simple de %s en d\u00e9cimal   est %ld \\n\",argv[1],hash_simple(argv[1])); \nprintf (\"Le hash simple de %s en h\u00e9xad\u00e9mal est %lx \\n\",argv[1],hash_simple(argv[1])); \n\nreturn EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@elliott:~\/Works\/langage_C\/hash$\/hash \"Bonjour\"\nLe hash simple de Bonjour en d\u00e9cimal   est 735 \nLe hash simple de Bonjour en h\u00e9xad\u00e9mal est 2df \n<\/code><\/pre>\n\n\n\n<h2 id=\"on-va-etudier-la-fonction-main-int-argc-char-argv\" class=\"wp-block-heading\">On va \u00e9tudier la fonction main(int argc, char **argv) <\/h2>\n\n\n\n<h4 id=\"si-argc-est-different-de-2\" class=\"wp-block-heading\">Si argc est diff\u00e8rent de 2 <\/h4>\n\n\n\n<h5 id=\"expliquer-pourquoi-argc-peut-etre-different-de-2-et-comment\" class=\"wp-block-heading\">expliquer pourquoi argc peut \u00eatre diff\u00e8rent de 2 et comment ?<\/h5>\n\n\n\n<h5 id=\"fprintf-et-stderr\" class=\"wp-block-heading\">fprintf et stderr<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@elliott:\/dev$ ls \/dev\/std*\nstderr  stdin  stdout\nbruno@elliott:\/dev$ ls -l \/dev\/std*\nlrwxrwxrwx 1 root root 15  9 f\u00e9vr. 10:39 stderr -&gt; \/proc\/self\/fd\/2\nlrwxrwxrwx 1 root root 15  9 f\u00e9vr. 10:39 stdin -&gt; \/proc\/self\/fd\/0\nlrwxrwxrwx 1 root root 15  9 f\u00e9vr. 10:39 stdout -&gt; \/proc\/self\/fd\/1\nbruno@elliott:\/dev$ \n<\/code><\/pre>\n\n\n\n<h5 id=\"a-l-aide-du-man-fprintf-et-du-man-stderr-determiner-ce-que-represente-stderr\" class=\"wp-block-heading\">A l&rsquo;aide du <strong>man fprintf<\/strong>  et du man stderr  d\u00e9terminer ce que repr\u00e9sente stderr<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@elliott:~$ echo \"Erreur !\" &gt; \/dev\/stderr \nErreur !\nbruno@elliott:~$ \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">l&rsquo;id\u00e9e de diriger les erreurs sur stderr est d&rsquo;\u00e9viter de m\u00e9langer les stdout et les erreurs<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>                  +----------------+\n                  |    Programme   |\n                  |                |\n     stdin  &lt;-----| 0              |-----&gt; 1  stdout\n   (entr\u00e9e)       |                |     (sortie)\n                  |                |-----&gt; 2  stderr\n                  +----------------+     (erreurs)<\/code><\/pre>\n\n\n\n<h3 id=\"la-fonction-unsigned-long-int-hash-simple-const-char-str\" class=\"wp-block-heading\">La fonction unsigned long int hash_simple(const char *str)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">le mot cl\u00e9 <strong>const<\/strong> va imposer de ne pas modifier ici str  (constante)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on utilise ici un format d&rsquo;entier particulier , unsigned long int <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Linux 64-bit<\/strong><\/td><td>8 octets (64 bits)<\/td><td>18 446 744 073 709 551 615<\/td><td>0xFFFFFFFFFFFFFFFF<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">unsigned , donc que positif  et \u00e9norme !! sur 64 bits !<\/p>\n\n\n\n<h5 id=\"pourquoi-avoir-choisi-ce-type-pour-faire-un-hash\" class=\"wp-block-heading\">Pourquoi avoir choisi ce type pour faire un hash ?<\/h5>\n\n\n\n<h5 id=\"donner-le-role-de-ld-et-lx-dans-notre-code\" class=\"wp-block-heading\">Donner le role de %ld et %lx dans notre code <\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">le code du hash est essentiellement ici !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    p = str;\n    while (*p != '\\0')\n    {\n        hash = (hash * prime) + (unsigned long int)(*p);\n        p++;\n    }<\/code><\/pre>\n\n\n\n<h5 id=\"p-0-sert-a-determiner-quoi-aidez-vous-de-gdb\" class=\"wp-block-heading\">(*p != &lsquo;\\0&rsquo;) , sert \u00e0 d\u00e9terminer quoi ?  (aidez vous de gdb)<\/h5>\n\n\n\n<h5 id=\"l-algorithme-du-hash-hash-prime-unsigned-long-int-p\" class=\"wp-block-heading\">L&rsquo;algorithme du hash = (hash * prime) + (unsigned long int)(*p);<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">ici on d\u00e9couvre peut \u00eatre le <strong>cast<\/strong>    (un moule en francais)     qui force un char ici *p en format  unsigned long int<\/p>\n\n\n\n<h5 id=\"comment-evolue-le-hash\" class=\"wp-block-heading\">comment \u00e9volue le hash ?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">la constante prime ici va nous servir \u00e0 faire \u00ab\u00a0un m\u00e9lange\u00a0\u00bb   on y mettra un nombre premier pour augmenter le m\u00e9lange &#8230;ici on a mis 1 vous pouvez utiliser d&rsquo;autres prime et constater.<\/p>\n\n\n\n<h5 id=\"si-prime-vaut-1\" class=\"wp-block-heading\">si prime vaut 1 <\/h5>\n\n\n\n<h5 id=\"si-prime-vaut-31\" class=\"wp-block-heading\">si prime vaut 31<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">On va utiliser des nombres premiers pour prime ,  pour \u00e9viter les collisions <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Avec un nombre NON premier (ex: 4)\nhash = (hash * 4) + char\n\/\/ 4 = 2 \u00d7 2 \u2192 beaucoup de motifs r\u00e9p\u00e9titifs\n\n\/\/ Avec un nombre premier (ex: 5)\nhash = (hash * 5) + char\n\/\/ 5 est premier \u2192 m\u00e9lange meilleur<\/code><\/pre>\n\n\n\n<h2 id=\"mot-de-passe\" class=\"wp-block-heading\">Mot_de_passe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On va r\u00e9aliser un code qui va comparer un mot de passe<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdio.h>\n#include &lt;string.h>\n#include &lt;stdlib.h>\n\n#define MOT_DE_PASSE \"secret123\"\n\nint main(int argc, char *argv[]) \n{\n    \/* V\u00e9rifier qu'un argument a \u00e9t\u00e9 pass\u00e9 *\/\n    if (argc != 2) \n    {\n        printf(\"Usage: %s &lt;mot_de_passe>\\n\", argv[0]);\n        return EXIT_FAILURE;\n    }\n\n\n    \/* Comparer la cha\u00eene pass\u00e9e avec la constante *\/\n    if (strcmp(argv[1], MOT_DE_PASSE) == 0) \n    {\n        printf(\"Acc\u00e8s autoris\u00e9\\n\");\n        return EXIT_SUCCESS;\n    } \n    else \n    {\n        printf(\"Acc\u00e8s interdit\\n\");\n        return EXIT_FAILURE;\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on teste le code !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@elliott:~\/Works\/langage_C\/passwd$ .\/mot_de_passe dorian\nAcc\u00e8s interdit\nbruno@elliott:~\/Works\/langage_C\/passwd$ echo $?\n1\nbruno@elliott:~\/Works\/langage_C\/passwd$ .\/mot_de_passe secret123\nAcc\u00e8s autoris\u00e9\nbruno@elliott:~\/Works\/langage_C\/passwd$ echo $?\n0\nbruno@elliott:~\/Works\/langage_C\/passwd$ \n<\/code><\/pre>\n\n\n\n<h3 id=\"le-hacker\" class=\"wp-block-heading\">Le hacker !<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">le hacker  avec la commande hexdump va regarder dans le code!  et d\u00e9couvrir en clair le mot de passe !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hexdump -C mot_de_passe\n\n\n....\n000011f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\n*\n00002000  01 00 02 00 55 73 61 67  65 3a 20 25 73 20 3c 6d  |....Usage: %s &lt;m|\n00002010  6f 74 5f 64 65 5f 70 61  73 73 65 3e 0a 00 73 65  |ot_de_passe&gt;..<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">se<\/mark>|\n00002020  63 72 65 74 31 32 33 00  41 63 63 c3 a8 73 20 61  |<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">cret123<\/mark>.Acc..s a|\n00002030  75 74 6f 72 69 73 c3 a9  00 41 63 63 c3 a8 73 20  |utoris...Acc..s |\n00002040  69 6e 74 65 72 64 69 74  00 00 00 00 01 1b 03 3b  |interdit.......;|\n00002050  28 00 00 00 04 00 00 00  d4 ef ff ff 74 00 00 00  |(...........t...|\n00002060  14 f0 ff ff 9c 00 00 00  24 f0 ff ff 44 00 00 00  |........$...D...|\n00002070  0d f1 ff ff b4 00 00 00  14 00 00 00 00 00 00 00  |................|\n.....\n<\/code><\/pre>\n\n\n\n<h2 id=\"pour-securiser-utilisons-le-hash-simple\" class=\"wp-block-heading\">Pour s\u00e9curiser utilisons le hash simple !<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Proposer un code utilisant le <strong>hash simple<\/strong> permettant de ne pas connaitre le mot de passe en regardant dans le code<\/p>\n\n\n\n<h2 id=\"conclure-sur-le-hash\" class=\"wp-block-heading\">Conclure sur le hash<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: Code de hash simple le hash permet de s\u00e9curiser un mot de passe par exemple ! dans la conclusion vous expliquerez cela \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-5826","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TP6_C Hash_simple - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/hash_simple\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TP6_C Hash_simple - workboot\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: Code de hash simple le hash permet de s\u00e9curiser un mot de passe par exemple ! dans la conclusion vous expliquerez cela \u00e0 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/hash_simple\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-18T15:57:49+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/hash_simple\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/hash_simple\\\/\",\"name\":\"TP6_C Hash_simple - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"datePublished\":\"2025-12-14T10:12:54+00:00\",\"dateModified\":\"2026-02-18T15:57:49+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/hash_simple\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TP6_C Hash_simple - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/hash_simple\/","og_locale":"fr_FR","og_type":"article","og_title":"TP6_C Hash_simple - workboot","og_description":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: Code de hash simple le hash permet de s\u00e9curiser un mot de passe par exemple ! dans la conclusion vous expliquerez cela \u00e0 [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/hash_simple\/","og_site_name":"workboot","article_modified_time":"2026-02-18T15:57:49+00:00","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/hash_simple\/","url":"https:\/\/workboot.fr\/ciela\/hash_simple\/","name":"TP6_C Hash_simple - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"datePublished":"2025-12-14T10:12:54+00:00","dateModified":"2026-02-18T15:57:49+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/hash_simple\/"]}]},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: Code de hash simple le hash permet de s\u00e9curiser un mot de passe par exemple ! dans la conclusion vous expliquerez cela \u00e0 [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/5826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=5826"}],"version-history":[{"count":42,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/5826\/revisions"}],"predecessor-version":[{"id":6845,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/5826\/revisions\/6845"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=5826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}