Un jour, il n'y a pas si longtemps, je m'ennuyais sur mon ordinateur. Je n'avais pas de projet de programmation, donc j'ai regardé la télé

Après avoir vu ce film, j'ai pensé à faire un script pour codé un texte. Script appelé gentillement Mercury^^...
J'ai créé à cette idée un script avec 2 fonctions; Crypter nommée _Mercury_Crypt & Décrypter nommée _Mercury_Decrypt
Code : Tout sélectionner
_Mercury_Crypt($_Char,$mute)
$mute = C'est la difficulté à crypté, plus le chiffre est grand, plus le message sous la forme crypté va être grand.
Code : Tout sélectionner
_Mercury_Decrypt($_Char)
Exemple :
Hello world peut ainsi s'écrire comme ceci : 338510:48746880:68381040:73120320:73120320:75151440:21665280:58902480:75151440:77182560:67704000:338530
Ou encore :
363626:52363584:73454472:78545376:78545376:80727192:23272704:63272664:80727192:82909008:72727200:363646
245690:35380800:49631400:53071200:53071200:54545400:15724800:42751800:54545400:56019600:49140000:245710
521420:75085920:105328860:112628880:112628880:115757460:33371520:90728820:115757460:118886040:104286000:521440
537800:77444640:108637620:116166960:116166960:119393820:34419840:93578940:119393820:122620680:107562000:537820
335780:48353760:67829580:72530640:72530640:74545380:21490560:58427460:74545380:76560120:67158000:335800
Oui Oui tout sa veulent simplement dire : Hello world.
Voici le script :
Code : Tout sélectionner
#include <String.au3>;J'inclus la bibliothèque String
#include <Array.au3>;J'inclus la bibliothèque Array
Func _Mercury_Decrypt($_char)
Local $decrypt;Définition de la variable decrypte
$_array = _StringExplode($_char,":", 0);Définie la variable _array par la fonction _StringExplode
$mute = $_array[UBound($_array) -1] + $_array[0];Définie la variable mute par la variable _array[Ubund(_array)] plus _array[0]
For $i = 1 To UBound($_array) - 2 Step 1;Boucle qui comme à 1 et ce fini à ubund(_array) avec un step de 1
$decrypt &= _Decalcule_Char($_array[$i],$mute);Définie la variable decrypt par la fonction _Decalcue_Char
Next
Return $decrypt;Renvoie le texte décrypté
EndFunc
Func _Decalcule_Char($chars,$mute)
$mult_chars = $chars / $mute;Définie la variable mult_chars par chars divisé par mute
$result = Chr($mult_chars);Définie la variable result par mult_chars correspondant à un code d'ASCII qui définie un caractère
Return $result;Retourne le caractère
EndFunc
Func _Mercury_Crypt($_char,$mute)
Local $chaine;Définition de la variable chaine
FileDelete(@TempDir&"\"&"crypt.tmp");Supprime l'ancien fichier crypt.tmp
$file = FileOpen(@TempDir&"\"&"crypt.tmp", 1);Créer un nouveau fichier crypt.tmp qui est localisé dans TEMP
If @error Then Exit;Si il y a une erreur, il se coupe
FileWrite($file,$_char);Ecrit le texte
FileClose($file);Ferme le handle
$file = FileOpen(@TempDir&"\"&"crypt.tmp", 0);Réouvre le fichier avec le MODE 0 pour le lire
If @error Then Exit;Si il y a une erreur, il se coupe
$rand = StringLen($_char);La variable rand calcule le nombre de caractère qu'il y a dans le texte
$cal_mute = $mute / 2;La variable cal_mute est égale à la moitié de la variable mute
$chaine &= Number($cal_mute - $rand) &":";Premier configuration du cryptage, la variable cal_mute - rand et ajoute ':'
While 1;Boucle
$chars = FileRead($file, 1);Définie la variiable chars par les caractères pris 1 par 1 du texte dans le fichier crypt.tmp
If @error = -1 Then ExitLoop;Quand il n'y a plus de caractère à traîté, fin de boucle
$chaine &= _Calcule_Char($chars,$mute);Traîte le caractère 1 par 1
Wend
$chaine &= $cal_mute + $rand;Ajoute à la variable chaine la variable cal_mute + rand
FileClose($file);Ferme le handle du fichier
FileDelete(@TempDir&"\"&"crypt.tmp");Supprime le fichier crypt.tmp
Return $chaine;Retourne la chaîne du texte sous la forme crypté
EndFunc
Func _Calcule_Char($chars,$mute)
$mult_chars = Asc($chars) * $mute;Définie la variable mult_chars par la variable chars sous ASCII multiplié par mute
$mult_chars &= ":";Ajout de ':'
Return $mult_chars;Retourne chars traîté
EndFunc
Commençons par le cryptage : Il prend la chaîne de caractère que vous lui avez donné, la copie dans un fichier situé dans TEMP, il le ré-ouvre et le lis caractère par caractère. Il prend un caractère, le traduit en ASCII puis le multiplie par la variable mute.
Décryptage : Pour décrypter la chaîne de caractère, il faut bien évidement la variable mute qui à été définie lors du cryptage. Mais pour que le décryptage fonctionne, il faut la variable mute. Regardé de plus prêt ces deux chaîne de caractère bleu :
473918:68245632:95733456:102368448:102368448:105212016:30331392:82463472:105212016:108055584:102368448:94785600:473938
C'est l'ensemble de ces deux chaînes de caractère que l'on obtient la variable mute. En locurence, ici, la variable mute est égal à 473918 + 473938 = 947856.
Donc pour le décrypté le programme fait :
68245632 divisé par 947856 est égal à 72 traduit en ASCII cela fait : H
95733456 divisé par 947856 est égal à 101 traduit en ASCII cela fait : e
102368448 divisé par 947856 est égal à 108 traduit en ASCII cela fait : l
102368448 divisé par 947856 est égal à 108 traduit en ASCII cela fait : l
105212016 divisé par 947856 est égal à 111 traduit en ASCII cela fait : o
30331392 divisé par 947856 est égal à 32 traduit en ASCII cela fait : ;C'est un espace
82463472 divisé par 947856 est égal à 119 traduit en ASCII cela fait : w
105212016 divisé par 947856 est égal à 111 traduit en ASCII cela fait : o
108055584 divisé par 947856 est égal à 114 traduit en ASCII cela fait : r
102368448 divisé par 947856 est égal à 108 traduit en ASCII cela fait : l
94785600 divisé par 947856 est égal à 100 traduit en ASCII cela fait : d
Ce qui donne : Hello world
Voilà

J'espère avoir bien expliqué, Bonne fin d'aprèm' à tous!
Ps: C'est impressionnant quand on configure la variable mute par @MDAY*@MON*@MSEC*StringLen(@ComputerName) ce n'est jamais la même configuration

