begin process at 2012 05 27 13:27:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ALGORITHME DE CRYPTAGE/DECRYPTAGE

ALGORITHME DE CRYPTAGE/DECRYPTAGE


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :cryptage, decryptage, algorithme, texte, dynamique Niveau :Débutant Date de création :01/03/2010 Date de mise à jour :01/03/2010 21:56:44 Vu / téléchargé :5 187 / 419

Auteur : besilent

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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.

Source

  • /* CRYPTAGE */
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <time.h>
  • #define M_SIZE 20
  • typedef struct
  • {
  • char c;
  • int x;
  • int y;
  • } BDD;
  • void SauvegarderCryptage( char *CheminFichier, int *s1 , int taille_s1, int *s2 , int taille_s2 );
  • void Initialiser_Matrice( char **Matrice , int Ligne , int Colonne , char c );
  • void Desallouer_Matrice ( char **Matrice , int Colonne );
  • void MemoriserFichier ( char *CheminFichier, char *Chaine );
  • void Allouer_Matrice ( char ***Matrice , int Ligne , int Colonne );
  • void Generer_Matrice ( BDD *bdd , char *T , char **M , int *EnTete, int i , int *p );
  • void fcrypter ( char *entree , char *sortie );
  • void Crypter ( BDD *bdd , char *T , char *s , int *d , int taille_d );
  • int LongueurFichier ( char *CheminFichier );
  • int DecouperEntier ( int x , int *s , int *i );
  • /* DECRYPTAGE */
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <time.h>
  • #define M_SIZE 20
  • typedef struct
  • {
  • char c;
  • int x;
  • int y;
  • } BDD;
  • void SauvegarderDecryptage( char *CheminFichier, char *s , int taille_s );
  • void MemoriserFichier ( char *CheminFichier, char *Chaine );
  • int LongueurFichier ( char *CheminFichier );
  • void ConstruireBDD ( BDD *bdd , char *T , int *t , int taille_t );
  • void fdecryptage ( char *entree , char *sortie );
  • void CharToInt ( char *s , int *d , int taille_s );
  • void Decrypter ( BDD *bdd , char *T , char *CodeIsDecrypted, int *texte , int taille_Texte );
  • void Decouper ( int *t , int *s1 , int *s2 , int taille_s1, int taille_s2 );
/* CRYPTAGE */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M_SIZE 20

typedef struct
{
        char c;
        int x;
        int y;
} BDD;

void SauvegarderCryptage( char   *CheminFichier, int  *s1     , int    taille_s1, int  *s2    , int taille_s2         );
void Initialiser_Matrice( char  **Matrice      , int   Ligne  , int    Colonne  , char  c                             );
void Desallouer_Matrice ( char  **Matrice      , int   Colonne                                                        );
void MemoriserFichier   ( char   *CheminFichier, char *Chaine                                                         );
void Allouer_Matrice    ( char ***Matrice      , int   Ligne  , int    Colonne                                        );
void Generer_Matrice    ( BDD    *bdd          , char *T      , char **M        , int  *EnTete, int i        , int *p );
void fcrypter           ( char   *entree       , char *sortie                                                         );
void Crypter            ( BDD    *bdd          , char *T      , char  *s        , int  *d     , int taille_d          );
int  LongueurFichier    ( char   *CheminFichier                                                                       );
int  DecouperEntier     ( int     x            , int  *s      , int   *i                                              );



/* DECRYPTAGE */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M_SIZE 20

typedef struct
{
        char c;
        int x;
        int y;
} BDD;

void SauvegarderDecryptage( char *CheminFichier, char *s     , int   taille_s                                          );
void MemoriserFichier     ( char *CheminFichier, char *Chaine                                                          );
int  LongueurFichier      ( char *CheminFichier                                                                        );
void ConstruireBDD        ( BDD  *bdd          , char *T     , int  *t              , int taille_t                     );
void fdecryptage          ( char *entree       , char *sortie                                                          );
void CharToInt            ( char *s            , int  *d     , int   taille_s                                          );
void Decrypter            ( BDD  *bdd          , char *T     , char *CodeIsDecrypted, int *texte    , int taille_Texte );
void Decouper             ( int  *t            , int  *s1    , int  *s2             , int  taille_s1, int taille_s2    );



 Conclusion

Dans tous les cas, il y a sûrement des imperfections dans mon code, donc je vous laisse me critiquer à votre aise et c'est bien là le but en plus de partager la source.

Merci de votre lecture et bonne continuation.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Cryptage
  •   Decryptage
    •   bin
      • Debug
    •   obj
      •   Debug
        • AllouerMatrice.oTélécharger ce fichier [Réservé aux membres club]4 877 octets
        • BuildDatabase.oTélécharger ce fichier [Réservé aux membres club]5 041 octets
        • CharToInt.oTélécharger ce fichier [Réservé aux membres club]4 961 octets
        • ConstruireBDD.oTélécharger ce fichier [Réservé aux membres club]5 033 octets
        • CryperInput.oTélécharger ce fichier [Réservé aux membres club]5 241 octets
        • DecouperEntier.oTélécharger ce fichier [Réservé aux membres club]4 830 octets
        • Decrypt.oTélécharger ce fichier [Réservé aux membres club]5 412 octets
        • Decrypter.oTélécharger ce fichier [Réservé aux membres club]5 181 octets
        • DesallouerMatrice.oTélécharger ce fichier [Réservé aux membres club]4 416 octets
        • EnregisterFichier.oTélécharger ce fichier [Réservé aux membres club]5 049 octets
        • ExtraireTexte.oTélécharger ce fichier [Réservé aux membres club]4 884 octets
        • ExtraireTrame.oTélécharger ce fichier [Réservé aux membres club]4 226 octets
        • fdecryptage.oTélécharger ce fichier [Réservé aux membres club]6 348 octets
        • GenererMatrice.oTélécharger ce fichier [Réservé aux membres club]5 403 octets
        • InitialiserMatrice.oTélécharger ce fichier [Réservé aux membres club]4 924 octets
        • LongueurFichier.oTélécharger ce fichier [Réservé aux membres club]4 865 octets
        • main.oTélécharger ce fichier [Réservé aux membres club]4 669 octets
        • MemoriserFichier.oTélécharger ce fichier [Réservé aux membres club]5 012 octets
        • ReconstruireEntier.oTélécharger ce fichier [Réservé aux membres club]1 815 octets
    • CharToInt.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 299 octets
    • ConstruireBDD.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 280 octets
    • Decouper.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 437 octets
    • Decryptage.cbpTélécharger ce fichier [Réservé aux membres club]1 638 octets
    • Decryptage.dependTélécharger ce fichier [Réservé aux membres club]1 868 octets
    • Decryptage.layoutTélécharger ce fichier [Réservé aux membres club]766 octets
    • Decrypter.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 845 octets
    • fdecryptage.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 369 octets
    • header.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 163 octets
    • LongueurFichier.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier965 octets
    • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier139 octets
    • MemoriserFichier.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 078 octets
    • SauvegarderDecryptage.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 043 octets

Télécharger le zip


 Historique

01 mars 2010 21:56:45 :
ajout d'un exemple

 Sources du même auteur

Source avec une capture GÉNÉRATEUR DE CLÉS SUR 26 DIGITS AU FORMAT HEXADÉCIMAL

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture RÉSOLUTION SUDOKU (9X9) PAR BACKTRACKING RÉCURSIF INTELLIGEN... par Gallien69
Source avec Zip A2DCRYPT - CRYPTAGE 2048 BITS par darkor
Source avec Zip Source avec une capture DÉCRYPTAGE C++ par pop70
Source avec Zip METHODE SIMPLE DE CRYPTAGE par professeurr

Commentaires et avis

Commentaire de LeFauve42 le 08/03/2010 11:08:45 6/10

Il manque peut-etre une notion de "cle" dans ton algo, pour qu'il puisse etre utilise.
Peut-etre qu'au lieu de creer la trame aleatoirement, tu pourrais la construire a partir d'une cle entree par l'utilisateur.
Du coup, tu ne la sauve plus dans le fichier crypte, mais tu la recree lors du decodage apres que l'utilisateur ai rentre sa cle.

Eric

Commentaire de besilent le 10/03/2010 13:24:38

Je ne l'ai pas précisé mais il est vrai que cet algorithme était destiné pour crypter des fichiers textes simples, pour des données personnelles notamment que l'on souhaiterait rendre un peu moins lisible.
Il est vrai que si le but finale était de le réutiliser pour crypter des communications et des envois d'informations sur internet, s'inspirer du cryptage RSA avec clé publique/privée semble être bien plus sur.
En attendant, je pense que pour un utilisateur lambda cela reste quand même compliqué de cracker cet algorithme. Évidemment pour des personnes averties, je suppose que cela reste assez simples mais ne connaissant pas vraiment les méthodes je ne serais juger sur l'efficacité de cet algorithme.
Je connais dans le principe RSA, je regarderai un peu plus en profondeur voir ce que je peux faire.

Sinon sur la présentation du code, les commentaires et le respect des "normes", qu'en avez vous pensez ?

Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

aide sur l'algorithme AMR [ par semecurbep ] Votre texte iciVotre texte ICIVotre texte ICI Cryptage par l'algorithme MD5 [ par LSRS ] [red]Salut tout le monde!!!J'ai un problème avec l'algorithme MD5 de RSA... je voudrais bien comprendre le mécanisme avec lequel il travaille...En plu Affichage de texte dynamique ? [ par tintin72 ] Bonjour, J'aimerai avoir certaines confirmations au sujet de l'affichage de texte dynamique.J'ai fait un programme qui affiche dynamiquement (avec Inv Quelques questions sur rsa [ par jean84 ] Salut a tous ! Je me suis interesse a l'algorithme de cryptage rsa il y a quelque temps mais j'avoue avoir encore du mal avec certains points texte dynamique [ par elmaroufy_youssef ] comment manipuler un texte dinamique avec C par exemple augmenter la valeur d'un numero par 1 chaque 5 seconde j'espere que c'est claire @+ cryptage et décryptage simple d'un texte [ par saberdenden ] Comment fait un cryptage et décryptage simple d'un texte et la découvert automatique de la clé de cryptage. (code ascii) je cherche un algorithme de l'indexation d'un texte [ par baster200x ] bonjour tout le monde, ben je cherche un algorithme qui fait l'indexation d'un texte par la méthode de "sac de mots".c-à-d : l'algorithme doit fournir [BAR]Decryptage vers texte [ par charlineproxy ] Hello !!! Je suis Charline et je débute dans la programmation donc merci de m'aider un petit peu !!! J'ai un petit problème (déjà!), compression et décompression un fichier texte selon l'algorithme de HUFFMAN [ par sarasofia ] [b]salut tout le monde s'il vous plaît[^^sad1] j ai besoin d'un programme de compression texte selon l algorithme de Huffman en C,C++, Matlab s'il vou codage d'un fichier texte avec c++ [ par mame06 ] salut tout le monde voilà je dois crypter et décrypter un fichier texte en c++ et mon grand probleme c'est que je suis débutante en c++. alors j'ai d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,466 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales