Bonjour,
Un jour, je m'ennuyais en cours de uC, comme très souvent en fait. Et j'ai pensé à un algorithme de cryptage, je suis loin de prétendre qu'il est super puissant ou autre mais voilà, je partage pour ceux que cela pourrait intéresser.
Voici un exemple de cryptage de la chaine :
"Bonjour, !
Voici une source qui présente un algorithme de cryptage.
Bien le bonsoir !"
Le cryptage donne :
07091416061004090400080709190105170912171604090 10309121214090413100104181713081306010504010016070 90817100513131503010909091707021013110213111403051 21119180100070115111616120507021003021113101515150 21601010519141103161812011616150417080614101614010 40214001103101115060716031907031200131811170612150 01918071605030717160308170819110805110103150719070 60211170719121702021709141700090312161919060200021 21319011905051410090200171219030716000604010215020 21218151314151105051513151212140912171212060104180 51402140602190719071015121217090610170902140601140 90400021417131212060104180610040002141001060117090 21404130418060717130400140908130400021406011409021 40709090109191212041817090813010503090400021404090 40002140610041809080413081307090919040019050214190 71907131517090400140902140901040002141416121214091 71312121709041802140602
Il y a deux programmes. Un pour crypter l'autre pour décrypter. J'aurais pu les mettre dans un même programme mais bon, il aurait fallu faire un menu et ce n'était pas le but. Libre à ceux qui souhaitent reprendre la source de la modifier à leur sauce.
Toujours est-il qu'il y a donc deux fonctions fcrypter et f decryptage dont les prototypes sont les suivants :
- void fcrypter ( char *entree, char *sortie );
+ entree correspond au chemin du fichier contenant le texte à crypter
+ sortir correspond au chemin du fichier contenant le resultat du cryptage
- void fdecryptage ( char *entree, char *sortie );
+ entree correspond au chemin du fichier contenant le resultat du cryptage
+ sortir correspond au chemin du fichier contenant le resultat du décryptage
Quoiqu'il en soit voici dans les grandes lignes la méthode de cryptage.
[1] On crée un tableau de caractères contenant les caractères qui seront autorisés au cryptage.
[2] On crée une matrice à 2 dimensions initialisée avec un caractère non autorisé ex : '¤'
[3] On appelle une fonction qui va générer aléatoirement des coordonnées pour chaque caractère
autorisé.
On vérifie pour valider le placement du caractère dans la matrice que la case n'est pas déjà
utilisé.
[4] On sauvegarde dans une structure les coordonnées dans la matrice pour chaque caractère.
[5] On va pouvoir généré le cryptage en sachant que le code crypté = trame + texte.
La trame correspond aux coordonnées de chaque caractère dans la matrice rangé dans l'ordre du
tableau des caractères autorisés afin de savoir comment la reconstruire pour le décryptage.
[6] Finalement, on appelle une fonction Crypter qui va chercher dans la matrice les coordonnées de
chaque caractères du texte à crypter.
[7] A l'occasion on en profite pour sauvegarder le résultat i.e la trame + texte.
Pour le décryptage et bien on fait l'inverse. J'ai commenté le code pour que ce soit compréhensible, enfin je l'espère.
Etant donné que j'ai modulé le code, j'ai quelque .c. Pour une meilleur lecture, j'ai zippé la source. Je mets le header de chaque opération i.e : cryptage/décryptage.