Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2016 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Cryptage RSA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cryptage RSA

n°1884761
Hamy
Posté le 14-05-2009 à 22:29:02  profilanswer
 

Salut à tous.
Dans le but de réaliser un cryptage d'une chaine de caractère avec RSA,
voici les 2 fonctions principales qui permettent de crypter un fichier source.
 

Code :
  1. // ********************* CRYPTAGE *********************  
  2. void crypter()
  3. {
  4.      FILE *source_crypt;
  5.      FILE *res_crypt;
  6.    
  7.      unsigned char c;
  8.      unsigned long int i=0;
  9.      unsigned long int k,n,e;
  10.      char nom_fichier[20];
  11.    
  12.      printf("\n\n\t\t\t *********\n" );
  13.      printf("\t\t\t *CRYPTAGE*\n" );
  14.      printf("\t\t\t *********\n\n\n\n" );
  15.    
  16.      fflush(stdin);
  17.    
  18.      printf("Donner le nom du fichier source avec son extension : " );
  19.      gets(nom_fichier);
  20.    
  21.      printf("\n\n\n\tdonner votre cle publique n : " );
  22.      scanf("%d",&n);
  23.    
  24.      printf("\n\n\n\tdonner votre cle publique e : " );
  25.      scanf("%d",&e);
  26.  
  27.      source_crypt=fopen(nom_fichier,"rb" );
  28.      if(source_crypt==NULL)
  29.      {
  30.      printf("Impossible d'ouvrir le fichier source.\n" );
  31.      }
  32.    
  33.      res_crypt=fopen("result.cry" , "wb" );
  34.      if(res_crypt==NULL)
  35.      {
  36.      printf("Impossible d'ouvrir le fichier resultat.\n" );
  37.      }
  38.      system("cls" );
  39.      printf("\n\n\t\tATTENDEZ SVP PENDANT LE CRYPTAGE." );
  40.    
  41.      while((feof(source_crypt)==0) && (fread(&c,sizeof(unsigned char),1,source_crypt)!=0))
  42.      {
  43.      fseek(source_crypt,sizeof(unsigned char)*i,SEEK_SET);
  44.      fread(&c,sizeof(unsigned char),1,source_crypt);
  45.      k=crypt(c,n,e);
  46.      fwrite(&k,sizeof(unsigned long int),1,res_crypt);
  47.      i=i+1;
  48.      }
  49.    
  50.      fclose(source_crypt);
  51.      fclose(res_crypt);
  52.      printf("\n\n\n\n\n\n\n\n\n\nLe cryptage de votre fichier est termine." );
  53.      printf("\n\nvotre fichier crypter se nomme result.cry" );
  54.      getch();
  55.    
  56. }
  57. // ********************* FONCTION CRYPTAGE ***********************
  58. unsigned long int crypt(unsigned char k,unsigned long int n,unsigned long int e)
  59. {
  60.      unsigned long int i,res=1,nbre;
  61.      nbre=((unsigned long int)k);
  62.    
  63.      for(i=0;i<e;i++)
  64.      {
  65.      res = res * nbre;
  66.      res=fmod(res,n);
  67.      }
  68.    
  69.      return res;
  70. }


 
Dans un 1er temps je n'ai pas besoin d'une "usine à gaz" comme celle ci.
Je souhaiterai d'abord crypter en RSA caractère par caractère (ASCII)
Dans un 2ème temps comment utiliser l'exponentiation modulaire
 
Merci

mood
Publicité
Posté le 14-05-2009 à 22:29:02  profilanswer
 

n°1884827
superbob56
Posté le 15-05-2009 à 09:28:55  profilanswer
 

Déjà on dit pas crypter mais chiffrer ...
Dans un premier temps, je te conseille de te documenter sur l'algo RSA. En principe dans RSA on ne chiffre pas caractère par caractère, mais plutôt par bloc (de n bits).
Ensuite, dans un second temps, je te conseille de chercher sur internet une librairie de chiffrement (regarde peut-être du coté de OpenSSL, sauf c'est trop uzineagazesque pour ton besoin) ou alors de coder toi même ton implémentation qui répondra à ton besoin sur mesure.


---------------
By bob.
n°1884866
Hamy
Posté le 15-05-2009 à 10:14:22  profilanswer
 

Ok superbob mais alors par quel commande je pourrais segmenter une chaine de caractère par des bloc de n bits.
Je me suis assez documenter sur cette méthode de "chiffrement" cependant je n'ai pas trouvé les commandes en C associées.
Merci d'avance ;)

n°1884868
rufo
Pas me confondre avec Lycos!
Posté le 15-05-2009 à 10:16:18  profilanswer
 

Hamy, si tu trouves que ta fonction crypt() est une usine à gaz, t'as pas vu le code source d'un algo RSA!!! C'est bien plus compliqué que ça. Et la plupart des algos de chiffrage travaiellent effectivement sur des blocs de bits et non caractère par caractère, sinon, une cryptanalyse te fait sauter ton chiffrage en 2 secondes :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1884873
Hamy
Posté le 15-05-2009 à 10:29:09  profilanswer
 

Oui c'est vrai mon prof d'info m'a parlé de ceci.
Admettons:
L'utilisateur saisit une chaine de caractère.
Cette chaine est alors segmenté par des blocs de 2bits
Avec quel commande je peux segmenté cette chaine en bloc de n bits?

n°1884922
jagstang
Pa Capona ಠ_ಠ
Posté le 15-05-2009 à 12:24:08  profilanswer
 

un pointeur ?
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1884972
superbob56
Posté le 15-05-2009 à 14:38:14  profilanswer
 

Hamy a écrit :

Ok superbob mais alors par quel commande je pourrais segmenter une chaine de caractère par des bloc de n bits.
Je me suis assez documenter sur cette méthode de "chiffrement" cependant je n'ai pas trouvé les commandes en C associées.
Merci d'avance ;)


Je te conseille vraiment de regarder du côté OpenSSL qui est doit surement te permettre d'arriver à tes fins. Par contre ça risque d'être assez long et compliqué à utiliser parce que OpenSSL c'est pas un petit projet ...
Mais pour ton problème de segmenter une chaîne de caractères en n bits, eh bien ça dépends, si tu résonne à base d'octet, c'est facile car un caractère = 1 octet, donc le découpage est simple (tu découpe ta chaîne en bloc de n caractères), par contre si tu veux avoir des bloc de 5 ou 7 bits (par exemple) c'est plus compliqué (faut faire du décalage de bit et tout ce genre de truc bien relou)...
 
EDIT: il n'y a pas de méthode 'magique' pour découper une chaîne en bloc de 2 bits. Déjà il faut segmenter en caractères (comme 8 est multiple de 2 c'est possible) puis utiliser les opérateurs de décalage de bits et ET binaires pour récupérer les 2 bits qu'il faut. Mais dans ton cas je pense que ce n'est pas du tout ce qu'il faut faire.


Message édité par superbob56 le 15-05-2009 à 14:41:43

---------------
By bob.
n°1885076
rufo
Pas me confondre avec Lycos!
Posté le 15-05-2009 à 20:38:47  profilanswer
 

des blocs de 2 à 8 bits, ça me paraît pas beaucoup...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Cryptage RSA

 

Sujets relatifs
cryptage delphiPHP&SQL : Cryptage MD5 Joomla & Page login
Problème de cryptage code sourceCryptage d'une chaine
Recherche un algorithme de cryptage/décryptage costaudNiveau de cryptage des users MySQL
Maple, méthode RSA, type arrayaide cryptage RSA
[Java RSA] cryptage de données avec une clé publiquecryptage "RSA"
Plus de sujets relatifs à : Cryptage RSA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR