begin process at 2010 02 10 02:46:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPTAGE A CLÉ PUBLIQUE

CRYPTAGE A CLÉ PUBLIQUE


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Niveau :Initié Date de création :22/02/2003 Date de mise à jour :23/02/2003 10:48:57 Vu :6 329

Auteur : Sensei01

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

 Description

c'est un programme de cryptage et décryptage (de base) à clé publique:
vous tapez N, la clé publique, la clé privé, et vous tapez votre message.
ce prog crypte et décrypte automatiquement.
amélioration a apporter :
séparer le cryptage et le décryptage, pouvoir importer des fichier.

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <math.h>
  • #define TAILLE 3000
  • #define CRYPT 0
  • #define DECRYPT 1
  • void calcul_reste(unsigned long int puiss,int cod);
  • char mess[TAILLE],decryptage[TAILLE];
  • unsigned long int longmess,cryptage[TAILLE],N,Ea,Da;
  • void main(void)
  • {
  • // saisie du message :
  • printf("\ntaper le message :");
  • gets(mess);
  • longmess = strlen(mess);
  • //saisie des clés de codage :
  • printf("\non propose : N=105,Ea=29,Da=5 ou : N=56461,Ea=5389,Da=12209\n");
  • printf("\nentrez N :");
  • scanf("%ld",&N);
  • printf("\nentrez EA :");
  • scanf("%ld",&Ea);
  • printf("\nentrez Da :");
  • scanf("%ld",&Da);
  • // cryptage :
  • calcul_reste(Ea,CRYPT);
  • printf("\nle message crypte est :\n");
  • for(int i=0; i<longmess; i++)
  • printf("%d ",cryptage[i]);
  • // décryptage :
  • calcul_reste(Da,DECRYPT);
  • printf("\nle message decrypte est :\n");
  • for(int i=0; i<longmess; i++)
  • printf("%c",decryptage[i]);
  • printf("\n\n");
  • system("PAUSE"); // ne sert que sous le logiciel DEV-C++ afin d'avoir
  • // le temps de voir ce qui s'affiche
  • }
  • void calcul_reste(unsigned long int puiss,int cod)
  • {
  • unsigned long int reste,tmp,data;
  • for(int i=0; i<longmess; i++)
  • {
  • //cod=0 si l'on crypte et cod=1 si l'on decrypte
  • if(cod==0)data=(unsigned long int)mess[i];
  • if(cod==1)data=cryptage[i];
  • tmp=1;
  • for(int j=0; j<puiss; j++)
  • {
  • tmp = data * tmp;
  • tmp = (unsigned long int)fmod (tmp, N);
  • }
  • reste=tmp;
  • if(cod==0){cryptage[i]=reste;}
  • if(cod==1){decryptage[i]=(char)reste;}
  • }
  • }
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#define TAILLE 3000
#define CRYPT 0
#define DECRYPT 1

void calcul_reste(unsigned long int puiss,int cod);

char mess[TAILLE],decryptage[TAILLE];
unsigned long int longmess,cryptage[TAILLE],N,Ea,Da;

void main(void)
     {
     // saisie du message :
     printf("\ntaper le message :");
     gets(mess);
     longmess = strlen(mess);

     //saisie des clés de codage :
     printf("\non propose : N=105,Ea=29,Da=5 ou : N=56461,Ea=5389,Da=12209\n");
     printf("\nentrez N :");
     scanf("%ld",&N);
     printf("\nentrez EA :");
     scanf("%ld",&Ea);
     printf("\nentrez Da :");
     scanf("%ld",&Da);

     // cryptage :
     calcul_reste(Ea,CRYPT);
     printf("\nle message crypte est :\n");
     for(int i=0; i<longmess; i++)
             printf("%d ",cryptage[i]);

     // décryptage :
     calcul_reste(Da,DECRYPT);
     printf("\nle message decrypte est :\n");
     for(int i=0; i<longmess; i++)
             printf("%c",decryptage[i]);

     printf("\n\n");
     system("PAUSE"); // ne sert que sous le logiciel DEV-C++ afin d'avoir
                      // le temps de voir ce qui s'affiche
     }

void calcul_reste(unsigned long int puiss,int cod)
     {
     unsigned long int reste,tmp,data;
     for(int i=0; i<longmess; i++)
             {
             //cod=0 si l'on crypte et cod=1 si l'on decrypte
             if(cod==0)data=(unsigned long int)mess[i];
             if(cod==1)data=cryptage[i];
             tmp=1;
             for(int j=0; j<puiss; j++)
                     {
                     tmp = data * tmp;
                     tmp = (unsigned long int)fmod (tmp, N);
                     }
             reste=tmp;
             if(cod==0){cryptage[i]=reste;}
             if(cod==1){decryptage[i]=(char)reste;}
             }
     } 

 Conclusion

g également fait prog qui ermet de créer N, une clé publique et une clé privé.
cette source est désormais disponible sur ce site sous le nom :
determination de clé RSA


 Sources du même auteur

DETERMINATION DE CLÉ RSA

 Sources de la même categorie

Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974
Source avec Zip Source avec une capture ELGAMALCIPHER par CHAR As Human
Source avec Zip CRYPTER-DECRYPTER EN UTILISANT L'ALGORITHME DE CESAR par Antoinejdu44
Source avec Zip CRYPT-O-MATIC "DARKCHOCOLATE" par FrancoisGauthier
Source avec Zip CREEP SECURITY ALGORITHM par nanonavich

Commentaires et avis

Commentaire de chmod777 le 22/02/2003 15:25:02

bon code mais tu devrait réaliser les utilitaires qui donnent les différentes clefs (difficiles a calculer).........

Commentaire de Galett le 22/02/2003 18:08:43

petite remarque qui ne change rien au code:
system("PAUSE"); // ne sert que sous le logiciel DEV-C++ ...
en fait ça fonctionne sur tous compilateurs windows puisque cela appel la routine système "pause"

Commentaire de Sensei01 le 23/02/2003 00:23:51

g deja fait un utilitaire qui permet de calculer les différente clefs, mais g ne l'ai pas encore mis sur ce site

Commentaire de AngeloVivaldi le 10/12/2003 23:38:16

Je sais pas mais j'arrive pa a comprendre le code, comment tu fais pour chiffrer , et sur des blocs de combien ?

Commentaire de liv le 08/06/2004 14:58:59

Salut,

Sympa ton programme mais j'ai un petit problème avec le décryptage...l'affichage ne correspond pas à la chaîne initialement entrée...
As tu une idée?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 6,568 sec (4)

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