<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Cryptage] XOR Fait maison]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Bonjour tout le monde,&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Je vais vous montrer un petit programme simple qui va permettre de crypter et de décrypter un fichier à l'aide de l’algorithme XOR.&lt;/p&gt;<br />
&lt;p&gt;Cet algorithme est très simple et léger, il offre une bonne protection sans plus, vous pouvez choisir la clé de cryptage que vous voulez.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Commencez par créer une solution DOS Win32 en C++ sous Visual Studio (2010 pour ma part), puis dans le fichier source main (principal) mettez ceci :&lt;/p&gt;<br />
&lt;pre class="ipsCode prettyprint"&gt;<br />
#include "stdafx.h"<br />
#include &lt;stdio.h&gt;<br />
#include &lt;STDLIB.H&gt;<br />
#include &lt;string.h&gt;</p>
<p dir="auto">/<em>------------------------------------------------------------------</em>/<br />
/<em>------------------------------------------------------------------</em>/<br />
/<em>------------------------------------------------------------------</em>/</p>
<p dir="auto">int crypt (char *clefc,char pathc[255],char targetc[255]);/<em>fonction de cryptage</em>/<br />
int decrypt (char *clefd,char pathd[255],char targetd[255]);/<em>decryptage</em>/<br />
void bann();/<em>Montre comment utiliser le programme</em>/<br />
void test(char *fnc,char *cl,char pathg[255],char target[255]);/<em>permet d'analyser l'entrée en ligne de commande</em>/<br />
FILE *fichier; /<em>handle vers le fichier source</em>/<br />
FILE *dest; /<em>handle vers le fichier destination</em>/</p>
<p dir="auto">/<em>------------------------------------------------------------------</em>/<br />
/<em>------------------------------------------------------------------</em>/<br />
/<em>------------------------------------------------------------------</em>/</p>
<p dir="auto">int main(int argc, char <em>argv[])<br />
{<br />
/</em> Vérifie le nombre d'argument en ligne de commande et s'il est exact<br />
il les teste pour determiner l'action a faire*/<br />
if (argc==1 || argc==2)<br />
bann();<br />
else<br />
test(argv[1],argv[3],argv[2],argv[4]);<br />
return 0;<br />
}</p>
<p dir="auto">/<em>.................................................................</em>/<br />
void bann()<br />
{<br />
puts("\n\t\t&lt;------------------XorCrypt--------------------&gt;");<br />
puts("\t\t&lt;--------------------------------------------&gt;\n");<br />
puts("Fonctionnement :");<br />
puts("xorcrypt -c nom_de_fichier clef Destination  : Crypte le ficher");<br />
puts("       -d nom_de_fichier clef Destination  : Decrypte le fichier");<br />
puts("Exemple  : xorcrypt -c texte.txt clef texte2.txt\n");<br />
system("pause");<br />
}<br />
/<em>.................................................................</em>/<br />
/* Test des valeurs entrées en argument de la ligne de commande <em>/<br />
void test(char <em>fnc, char <em>cl, char pathg[255],char target[255])<br />
{<br />
if (strcmp(fnc,"-c")==0)<br />
crypt(cl,pathg,target);<br />
else if (strcmp(fnc,"-d")==0)<br />
decrypt(cl,pathg,target);<br />
else<br />
bann();<br />
}<br />
/</em>.................................................................</em>/<br />
/</em> Fonction de cryptage*/<br />
int crypt (char <em>clefc,char pathc[255],char targetc[255])<br />
{<br />
int pd=0;/<em>initialisation du compteur de la clef</em>/<br />
int c;<br />
int i;<br />
if (clefc!=NULL &amp;&amp; pathc!=NULL &amp;&amp; targetc!=NULL)/</em> Verification des arguments necessaires*/<br />
{<br />
if (fichier=fopen(pathc,"rb"))/* ouverture du fichier source en mode lecture binaire <em>/<br />
{<br />
dest=fopen(targetc,"wb");/</em> ouverture du fichier destination en mode ecriture binaire <em>/<br />
puts("Fichier ouvert\n Encryption en cours...");<br />
while((c=fgetc(fichier))!=EOF)/</em> En boucle jusqu'a la fin du fichier*/<br />
{<br />
c=~c;/<em>Réalise une inversion des bits  du caractere</em>/<br />
c^=clefc[pd];/* Effectue un XOR sur le caractere avec un caractere de le clef <em>/<br />
fprintf(dest,"%c",c);/</em> ecrit le caractere dans le fichier */<br />
if (pd!=strlen(clefc))/*test de la clef */<br />
{pd+=1;}<br />
else<br />
{pd=0;}<br />
}<br />
puts("Encryption effectuée");<br />
fclose(fichier);<br />
fclose(dest);<br />
}<br />
else<br />
{<br />
puts("Impossible d'ouvrir le fichier");<br />
}<br />
}<br />
else<br />
puts("Argument manquant");<br />
return false;<br />
}</p>
<p dir="auto">/<em>.................................................................</em>/<br />
/<em>fonction de decryptage</em>/<br />
int decrypt (char *clefd,char pathd[255],char targetd[255])<br />
{<br />
int pd=0;<br />
int c;<br />
int i;<br />
if (clefd!=NULL &amp;&amp; pathd!=NULL &amp;&amp; targetd!=NULL) /*Test des arguments necessaires <em>/<br />
{<br />
if (fichier=fopen(pathd,"rb"))/</em> ouverture du fichier source en lecture binaire <em>/<br />
{<br />
dest=fopen(targetd,"wb"); /</em> fichier destination en lecture binaire <em>/<br />
puts("Fichier ouvert\n Decryptage en cours ...");<br />
while((c=fgetc(fichier))!=EOF)/</em> Boucle tant que le fichier n'a pas été entierement parcouru <em>/<br />
{<br />
c^=clefd[pd]; /</em> applique un XOR sur un caractere avec un caractere de la clef <em>/<br />
c=~c; /</em> Rotation des bits */<br />
fprintf(dest,"%c",c); /*ecriture dans le fichier destination <em>/<br />
if (pd!=strlen(clefd)) /</em> Test de la clef */<br />
{pd+=1;}<br />
else<br />
{pd=0;}<br />
}<br />
puts("Decryptage effectué");<br />
fclose(fichier);<br />
fclose(dest);<br />
}<br />
else<br />
{<br />
puts("Impossible d'ouvrir le fichier");<br />
}<br />
}<br />
else<br />
puts("Argument manquant");<br />
return false;<br />
}<br />
&lt;/pre&gt;<br />
&lt;p&gt;Vous enregistrez, vous compilez, vous récupérez l'exe et vous le mettez dans un dossier tout seul, renommez-le en xorcrypt.exe&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;&lt;u&gt;&lt;strong&gt;I. Le Cryptage&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;<br />
&lt;p&gt;Ensuite vous allez créer un .bat nommé Crypt.bat, dedans vous y mettez :&lt;/p&gt;<br />
&lt;pre class="ipsCode prettyprint"&gt;<br />
xorcrypt -c nocrypt.txt %CLEF% crypt.txt&lt;/pre&gt;<br />
&lt;p&gt;Remplacez %CLEF% par un mot, un SHA1, un MD5, ce que vous vouez, sans espace. Et remplacez nocrypt.txt par le fichier source &lt;u&gt;non crypté&lt;/u&gt;, et crypt.txt par le fichier destination &lt;u&gt;crypté&lt;/u&gt;.&lt;/p&gt;<br />
&lt;p&gt;&lt;em&gt;&lt;span style="font-size:12px;"&gt;Fonctionne avec toute les extensions de fichier.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Mettez-le dans le même dossier que xorcrypt.exe, et mettez le fichier .txt(ou autre) source au même endroit que les 2 fichier précédents. Lancez Crypt.bat et votre fichier va se Crypter.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;&lt;u&gt;&lt;strong&gt;2. Le décryptage&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;<br />
&lt;p&gt;Créer un .bat nommé Decrypt.bat, mettez-le dans le même dossier que les 2 autres fichiers (xorcrypt et Crypt), et remplissez-le comme ceci :&lt;/p&gt;<br />
&lt;pre class="ipsCode prettyprint"&gt;<br />
xorcrypt -d crypt.txt %CLEF% nocrypt.txt<br />
&lt;/pre&gt;<br />
&lt;p&gt;Remplacez %CLEF% par la même clef qui a servi au cryptage de ce fichier. Et remplacez crypt.txt par le fichier source &lt;u&gt;crypté&lt;/u&gt;, et nocrypt.txt par le fichier destination &lt;u&gt;décrypté&lt;/u&gt;. Lancez Decrypt.bat et votre fichier va se décrypter.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Le tour est joué, vous pouvez désormais crypter un fichier et le décrypter très simplement, il ne reste plus qu'à implanter le décryptage dans un programme pour pouvoir crypter le contenu (pour un jeu par exemple) <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;&lt;em&gt;Code fournit par &lt;a href="<a href="http://codes-sources.commentcamarche.net" rel="nofollow ugc">http://codes-sources.commentcamarche.net</a>" rel="external nofollow"&gt;<a href="http://codes-sources.commentcamarche.net" rel="nofollow ugc">http://codes-sources.commentcamarche.net</a>&lt;/a&gt; et remanié par Karles. &lt;/em&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Cordialement,&lt;/p&gt;<br />
&lt;p&gt;Karles&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/topic/246/cryptage-xor-fait-maison</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 04:50:27 GMT</lastBuildDate><atom:link href="https://melinyel.net/topic/246.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Mar 2014 09:45:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 13:01:13 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;&lt;strong&gt;Message automatique&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Le sujet a été déplacé de « &lt;a data-ipb="nomediaparse" href="&lt;<em><strong>base_url</strong></em>" rel="external nofollow"&gt;/index.php/forum/38-programmation/"&gt;Programmation&lt;/a&gt; → &lt;a data-ipb="nomediaparse" href="&lt;<em><strong>base_url</strong></em>" rel="external nofollow"&gt;/index.php/forum/45-c/"&gt;C++&lt;/a&gt; » to « &lt;a data-ipb="nomediaparse" href="&lt;<em><strong>base_url</strong></em>" rel="external nofollow"&gt;/index.php/forum/38-programmation/"&gt;Programmation&lt;/a&gt; → &lt;a data-ipb="nomediaparse" href="&lt;<em><strong>base_url</strong></em>" rel="external nofollow"&gt;/index.php/forum/43-c/"&gt;C&lt;/a&gt; ».&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/3042</link><guid isPermaLink="true">https://melinyel.net/post/3042</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Sat, 22 Mar 2014 13:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 12:44:44 GMT]]></title><description><![CDATA[<p dir="auto">&lt;blockquote class="ipsQuote" data-cite="Karles" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="3030" data-ipsquote-contentid="246" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1395491648" data-ipsquote-username="Karles"&gt;&lt;div&gt;<br />
&lt;div&gt;<br />
&lt;p&gt;Tu peux proposer une amélioration si tu le souhaite, style l'utilisation libC pour le C. Et pourquoi pas faire aussi un code orienté C++ uniquement tu vois.&lt;/p&gt;<br />
&lt;p&gt;Ce code est assez polyvalent et simple, et pas très poussé ça c'est sur mais à mon avis les optimisations et modifications de lecture ne serviraient pas à grand chose honnêtement.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;En revanche ce code est fonctionnel avec un programme C &amp; C++ bien que son code n'ait pas grand chose du C++ <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Si Azad veut déplacer en section C il peut, à moins que le code évolue <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61b.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--stuck_out_tongue" style="height:23px;width:auto;vertical-align:middle" title=":P" alt="😛" /> &lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;&lt;/blockquote&gt;</p>
]]></description><link>https://melinyel.net/post/3033</link><guid isPermaLink="true">https://melinyel.net/post/3033</guid><dc:creator><![CDATA[AlexMog]]></dc:creator><pubDate>Sat, 22 Mar 2014 12:44:44 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 12:34:08 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Tu peux proposer une amélioration si tu le souhaite, style l'utilisation libC pour le C. Et pourquoi pas faire aussi un code orienté C++ uniquement tu vois.&lt;/p&gt;<br />
&lt;p&gt;Ce code est assez polyvalent et simple, et pas très poussé ça c'est sur mais à mon avis les optimisations et modifications de lecture ne serviraient pas à grand chose honnêtement.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;En revanche ce code est fonctionnel avec un programme C &amp; C++ bien que son code n'ait pas grand chose du C++ <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Si Azad veut déplacer en section C il peut, à moins que le code évolue <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61b.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--stuck_out_tongue" style="height:23px;width:auto;vertical-align:middle" title=":P" alt="😛" /> &lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/3030</link><guid isPermaLink="true">https://melinyel.net/post/3030</guid><dc:creator><![CDATA[Karles]]></dc:creator><pubDate>Sat, 22 Mar 2014 12:34:08 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 12:21:27 GMT]]></title><description><![CDATA[<p dir="auto">&lt;blockquote class="ipsQuote" data-cite="Karles" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="3021" data-ipsquote-contentid="246" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1395490683" data-ipsquote-username="Karles"&gt;&lt;div&gt;<br />
&lt;div&gt;<br />
&lt;p&gt;C'est les deux.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Et vu que C++ était vide...&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;&lt;/blockquote&gt;</p>
]]></description><link>https://melinyel.net/post/3022</link><guid isPermaLink="true">https://melinyel.net/post/3022</guid><dc:creator><![CDATA[AlexMog]]></dc:creator><pubDate>Sat, 22 Mar 2014 12:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 12:18:17 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;C'est les deux.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Et vu que C++ était vide...&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/3021</link><guid isPermaLink="true">https://melinyel.net/post/3021</guid><dc:creator><![CDATA[Karles]]></dc:creator><pubDate>Sat, 22 Mar 2014 12:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 12:00:52 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Pourquoi avoir posté dans C++? O_o, c'est du C, et non pas du C++ O_o&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/3010</link><guid isPermaLink="true">https://melinyel.net/post/3010</guid><dc:creator><![CDATA[AlexMog]]></dc:creator><pubDate>Sat, 22 Mar 2014 12:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 09:59:11 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Merci Azad et de rien <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/2991</link><guid isPermaLink="true">https://melinyel.net/post/2991</guid><dc:creator><![CDATA[Karles]]></dc:creator><pubDate>Sat, 22 Mar 2014 09:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to [Cryptage] XOR Fait maison on Sat, 22 Mar 2014 09:57:20 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Très bon boulot, ça, Karles.&lt;br/&gt;<br />
Merci du partage. <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;br/&gt;&lt;br/&gt;<br />
Je vais essayer de le compiler et de poster l'exécutable (et le scan VirusTotal, évidemment).&lt;br/&gt;&lt;br/&gt;<br />
+1 Rep. <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/2989</link><guid isPermaLink="true">https://melinyel.net/post/2989</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Sat, 22 Mar 2014 09:57:20 GMT</pubDate></item></channel></rss>