Cryptage d'une chaine

Cryptage d'une chaine - Algo - Programmation

Marsh Posté le 23-11-2008 à 20:34:54    

Bonjour à tous,
Dans le cadre d'un projet informatique en DUT, j'ai choisi: "Cryptage d'une chaine de caractère".
J'aimerai beaucoup améliorer mon programme. Mais comment?
Voici le code actuel:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <string.h>
  5. void menu()
  6. {
  7.     printf("\n------------\n" );
  8.     printf("----Menu----\n------------\n\n" );
  9.     printf("1: Cryptage\n" );
  10.     printf("2: Decryptage\n" );
  11.     printf("3: Quitter\n" );
  12. }
  13. int main()
  14. {
  15.     int choix,fin=1;
  16.     menu();
  17.    
  18. while(fin)
  19. {
  20.     printf("\n\nQuel est votre choix:" );
  21.     scanf("%d",&choix);
  22.     fflush(stdin);
  23.     switch(choix)
  24.     {
  25.     case 1: {cryptage();}break;
  26.     case 2: {decryptage();}break;
  27.     case 3: exit(-1);break;
  28.     default: printf("Ce choix n'existe pas !\n" );}
  29.     }
  30. return 0;
  31. }
  32. int cryptage()
  33. {
  34. char chaine[80];
  35. int tailletab, i;
  36. printf("\n\nCryptage:\n" );
  37. printf("Chaine a crypter:" );
  38. scanf("%s",&chaine);
  39. tailletab=strlen(chaine);
  40. for(i=0; i<tailletab; i++)
  41. {
  42.  chaine[i]=chaine[i]+5*9-2;
  43. }
  44. printf("\nTaille du tableau est:%d",tailletab);
  45. printf("\nVoici la chaine cryptee:%s",chaine);
  46.    return 0;
  47. }
  48. int decryptage()
  49. {
  50. printf("Programme de decryptage simple\n\n" );
  51. return 0;
  52. }


 
(La fonction decryptage est futile)
Ceci est une méthode parmi tant d'autres.
Pourriez vous me dire comment je pourrais optimiser mon code?  :sarcastic:
Merci d'avance!  

Reply

Marsh Posté le 23-11-2008 à 20:34:54   

Reply

Marsh Posté le 23-11-2008 à 23:05:52    

Je m'attendais à un pti coup d'pouce  :(

Reply

Marsh Posté le 24-11-2008 à 08:07:52    

c'en est un [:spamafote]
 
tu choisis un algo dans la liste (symétrique, ca sera plus simple), tu fais ce que tu peux pour le comprendre, et apres tu l'implémentes, sans copier/coller l'implémentation de référence.
 
parce que pour l'instant, ton algo de chiffrement, c'est ca :
chaine[i]=chaine[i]+5*9-2
 
ce qui veut dire que chaque caractère a son correspondant, systématiquement le même.

Reply

Marsh Posté le 24-11-2008 à 09:26:00    

Fait du chiffre de playfair c'est normallement de ton niveau et c'est assez rapide. Puis si tu fait un projet sur le cryptage, faut quand meme avoir une partie theorique correcte sur chiffrement symetrique/asymetrique, cle publique cle privé, chiffrement ou hachage, etc...


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 24-11-2008 à 09:36:09    

Hamy a écrit :

Je m'attendais à un pti coup d'pouce  :(


De quel genre? [:pingouino]
 
Faut voir ce que tu veux "optimiser". Parce que là, on dirait un simple exercice de TP, pas un projet. [:sadnoir]
 
Petit détail : while(fin), c'est très curieux. :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 24-11-2008 à 09:42:39    

commence déjà par corriger la faille de buffer overflow.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 24-11-2008 à 09:48:45    

jagstang a écrit :

commence déjà par corriger la faille de buffer overflow.


Boh, les profs s'en soucient à ce niveau? [:dawa]
 
Donne-lui peut-être un input qui va poser pb; je sens que ça pas passer au sinon. [:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 24-11-2008 à 11:36:15    

ben une chaine plus longue que le buffer qu'il a prévu...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 24-11-2008 à 19:21:22    

Oula oula

Citation :

commence déjà par corriger la faille de buffer overflow.


Citation :

Donne-lui peut-être un input qui va poser pb; je sens que ça pas passer au sinon.


pas trop compris !
Bon je sais que ce que j'ai fais est simplissime.
En résumé: je souhaiterai que chaque caractère codé possède sa propre clé (cryptage asymétrique je crois).
Le projet est pour mi-janvier 2009. J'ai un peu d'avance donc j'aimerai par la suite créer une légère interface de ce genre:  
http://www.oussx.somee.com/images/cryptx.jpg

Reply

Marsh Posté le 24-11-2008 à 19:21:22   

Reply

Marsh Posté le 24-11-2008 à 19:46:51    

Pour la remarque du buffer overflow, jagstang a tout de même donné une explication limpide suite à ma remarque...
 
Pour le reste, beh, au boulot :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 24-11-2008 à 23:43:32    

Le cryptage n'est pas très efficace quand même là, avant de penser à une GUI pour égayer tout ça, je pense que ce serait plus intéressant (pour toi) d'étudier des algos plus performant.

 

Dans ton cas, une étude des fréquences d'apparition des lettres sur un texte assez long permet généralement de retrouver la correspondance entre le texte crypté et le texte original. Une fois qu'on a cette correspondance, on peut décrypter tout les messages qui passeraient par ton algo.


Message édité par c0wb0y le 24-11-2008 à 23:43:51
Reply

Marsh Posté le 25-11-2008 à 08:59:25    

raté c'est symmetrique (sinon il te faudrait 2 clés)
 
Sinon ce que tu fais c'est de la substitution monoalphabétique


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-11-2008 à 10:05:52    

Son algo est pourri, s'il rend ça il va se faire rire au nez.
 
En DUT en premier semestre j'avais fait du cryptage en algo vigenere/playfair qui est deja un vrai algo et surtout momontre un poil de recherche.
 
Apres c'est sur que fait du cryptage plus evolué c'est pas forcement facile, mais les cryptage simple son abordable.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 25-11-2008 à 10:19:09    

clair que c'est du crpytage primitif. Mais c'est un poil ludique pour se familiariser avec le C.  
 
Vigenère est en effet du vrai cryptage. Car il est en effet absolument incassable (seul hic, la clé doit être aussi longue que le message. Ce qui rend le transport de la clé problématique...)
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-11-2008 à 10:40:59    

De tête, si la clef est plus petite que le message, on l'utilise "en boucle".
 
Mais  bon ça reste imparfait, car ça ne fonction qu'avec des caractère alphabetique non accentués.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 25-11-2008 à 10:45:36    

en l'utilisant en boucle il devient imparfait en effet. Pour les caractère accentués c'est faux. Libre à toi de choisir ton ensemble pour la chaine et la clé


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-11-2008 à 14:11:16    

Bon et bien au boulot, je vais m'inspirer des algo de type vigenere playfair etc...
Si j'ai bien compris les méthodes sont:
Les données de la chaine doivent changer de place,
Evidemment changer de valeur
Attribuer un clé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed