Decryptage C++

Decryptage C++ - C++ - Programmation

Marsh Posté le 09-10-2015 à 19:58:53    

Bonjour,
 
Je viens chercher de l'aide pour un exercice que notre professeur nous à donné et que je ne comprend pas.
Il nous à fournit deux fichiers sources .cpp et un fichier texte crypter.  
Il faut qu'on trouve la clé de décryptage et déchiffrer le texte à l'aide des deux codes suivants :  
 

Code :
  1. #include "fonctions.h"
  2. void main(){
  3. srand(time(NULL));//initialisation du générateur de nombre aléatoires
  4. string buffer;
  5. char temp[5];
  6. string clef;
  7. string tabCar=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  8. cout<<"Le texte sera crypte avec la clef: "<<endl;
  9. cin.getline(temp,5);
  10. clef=temp;
  11. ifstream fichier_entree("monTexte.txt", ios::in);  // on ouvre un fichier en lecture
  12. if(fichier_entree)  // si l'ouverture a réussi
  13.     {     
  14.  while(!fichier_entree.eof()){
  15.   string temp;
  16.   getline(fichier_entree,temp);
  17.   buffer+=temp;
  18.  }
  19.  fichier_entree.close();  // on ferme le fichier
  20.  nettoyer(buffer);//transformation de buffer en une chaine ne contenant plus que des espaces et des majuscules
  21.  cout<<buffer<<endl;;
  22.  //Cryptage
  23.  for(int i=0;i<buffer.size();i++){
  24.   if(buffer[i]==' '){
  25.    buffer[i]=tabCar[clef[i%clef.size()]-'A'+1];
  26.   }
  27.   else{
  28.    buffer[i]=tabCar[(buffer[i]-'A'+1+clef[i%clef.size()]-'A'+1)%27];
  29.   }
  30.  }
  31.  ofstream fichier_sortie("monTexteCrypte.txt", ios::out);  // on ouvre un fichier en ecriture
  32.  if(fichier_sortie){
  33.   fichier_sortie<<buffer;
  34.  }
  35.  else{
  36.   cerr << "Impossible d'ouvrir le fichier de sortie!" << endl;
  37.  }
  38.     }
  39. else  cerr << "Impossible d'ouvrir le fichier d'entree!" << endl;
  40. _getch();
  41. }


 
 
 
 
 
[#ff0000]et le second :
 
 

Code :
  1. #include "fonctions.h"
  2. bool estNonAlpha(char c){
  3. if(c>='a'&&c<='z') return false;
  4. if(c>='A'&&c<='Z') return false;
  5. return true;
  6. }
  7. void enMaj(char &c){
  8. c=toupper(c);
  9. }
  10. void nettoyer(string &texte){
  11. //1-Elimination des accents et de la cédille
  12. replace(texte.begin(),texte.end(),'é','e');
  13. replace(texte.begin(),texte.end(),'è','e');
  14. replace(texte.begin(),texte.end(),'ê','e');
  15. replace(texte.begin(),texte.end(),'à','a');
  16. replace(texte.begin(),texte.end(),'â','a');
  17. replace(texte.begin(),texte.end(),'ô','o');
  18. replace(texte.begin(),texte.end(),'ü','u');
  19. replace(texte.begin(),texte.end(),'û','u');
  20. replace(texte.begin(),texte.end(),'ù','u');
  21. replace(texte.begin(),texte.end(),'ï','i');
  22. replace(texte.begin(),texte.end(),'î','i');
  23. replace(texte.begin(),texte.end(),'ç','c');
  24. //2-Elimination des caractères non alphabétique
  25. replace_if(texte.begin(),texte.end(),estNonAlpha,' ');
  26. //3-Ecriture des mots en majuscule
  27. for_each(texte.begin(),texte.end(),enMaj);
  28. }


 
 
et le texte déchiffrer :
 
TQXZFPWDASXEOFCQABPEEGOIJPHDQCVWBKWDECQWAWQIATXIABFEMOHDACIJFEWYFW DAGQXPWUIAFHWADHRFFLGUKRRTBGIAVRYTBCMMBDVSKYEJVCUVBXRAJRQNGCHFBKEVVHDUCLPMGCDWGWYAFCYOGCVFFLRHQWIAIUMTBGIAHHVABDVNGCHAWQIAIUSTUHDDCQRFBHXAERMGHHDEBXRAEKEQGDYATDFBVWYABVIATHXPWURBKWDCTXWRWHQFPWDEGUVJGUIANXMABHXANHDTWLZBKWDEGVDZGXAALXWRWCEAEHDRWCMMBHYUBGMTRDVVBCGSQLWBPWDMGVDCTDWABVIDQXEOVCPFPWINGQXANDDUGWIABHXAJDYTUDRUBVEANHZSGCWVRHVJGXVFBDZFECWBBOIWTHDJPIISKHYSGCNVUTYACCWPPCRFACDTQUXFBGIAIUMNCFIAULKOKIMDCWMWGCUVKCTPWUVBKWDTGCXSCGYJTHDQCUDABCDNCLWASXDFUWDDGCUVGCGAGVXASXIAEHXAJRQNGCPBBCDABSSVTCWVTCNFBODBKCZVBTYFNTYFBSESVCDABHRAVRYUBFETBCNFBQIAUXMTBWSVLRYSUCTBUCWBBGYQGCDAEHDQGUWPPQEHGCDHTDZFBGDVPHDHTDZJVHDQTHWRWHDNGQEDCQXFBCIUCLXAFHDDGXAASXMABPINGCVBRLHFOHRUBHRUTHZVUCDQTHSDEXTFPWDMBRFTGUZBVHYSBLPAUHDOQPQBKWDKCYISVCDFVCMMBHXBKWDEGCPBBSSMKFIAKODSGPTMKVWBKWDBBPSOVUIVKODTWUDNGUDMGVDGQQGUKRRTBSIOKEPFUCDNCLWAWWMMGVDAFCMOUSIDVHYSBCMMBQDBXDMUBSETBYYANHWAERQNGQGFOHRUUCHFBPEEGOIJPHDALDZFTWDEGYEJVCPFBSSTVHDRWCMMBRGDWSEJVCEANDDQTRXFEWMPPCHFBPDAEKECQXMMNHXABOIAUHGSGWEJTHDEWCQJPLWUTHDEBHXBVCGPOWIACQKMGVDACOSSUCTSGIIUBGIARRPJEHDBBSESKVDASXEOFCNBXHVUBHXBKWDBTUMWGCEAORRUTHYJNCWVTCQFTCDMCCJPTWYOGCHVBJVBPGDNCQYGCFXVTLISBHXBKWDEGMEAHDMUGCDFVCPFBSISGCQBFHPFKQIAGWEJVCHFXHRVBPSOULIVTCQBFHPFKQIAEHVUCLRTBRJGKFMFTVDEGCTPNLGFBRRUBXRFBSLZULSOQPMFBDDQCUXAGWDRWLDTGCGPOSPJSXIAFCYOBDMSBGIADDWTGVWFBPIMGCEAWQDBKUDEBDYUQUMUGCDKCYISVCEWCLXAEHXUGCTI VMPPRQJGCDNQLRTBOEADDWTGVWFBGEOUCRPVUIAERRWKFXJQQDAULDMGVDBOHWAGWEJGQXAXLWJDOITBDYYBAIVZCDPPCZFTUEJVCHJUWMOEWINGQXAEHXUGCGIQVIAGWVBPJIASXIAEKEDWQDEGVDJPGMWKGYTBGIANCITRHGFBKYNCLRFBFSSTHWQQQHACCUVGOUVBXRFBGITBHWQGFITBGIANDDDTHEUKRRACQMNCOIABCIUBODPPCTPWUVBKWDSGFSOPDMUTHDBKVINGQXAEHXUGCZFTLXFBDDQGLRFBHRUTHZVGCTBTCPFBSIOUHYSBCUVGCDEGSYJUCPAJXMUTHDKWVUVBDDMBDMHNHDAFHTVKVDMGCTPTFDKWVUVBDYAVLKSGCDUQXWANHWACQMNCXAAURRUBGEOUCPAJRQNGCIUBTYFBFLBEXRAFCIVZCITVCHBPVDVPCLPOPIABTYFNTYFHRMTBPINGCTMWVMFWUWAFCIOVUIAGXAACCPBBISJUCDABCDNCLRUGQEOVCDTKCPAQQDBFPIUBXRAORQFPWDBXHGAPRYTBTYFBGEOUCXPWWDIQPQFBLPA CEAWQIAFHWAGVTFEHWACQMNCOITBGIANDDDTHEUKRRABLPAPRYTBVISCCJBELPFBGIAFLVFBFIASXIAECIUCLXASXIANCSGHLGJGUDEGCTBK DKCYISVCPFUCTB VEOUCETVXVJGQWAURRUBFSOXDMOEXWASXIAFDRTBWSVVHDQQUXFGCHFBOSVXHDJNCBACCYOBFLJGQDANHUVGODFUWDUWHDQCUDMCCQFTHDAUDRTBTYPKCIOBJVBPGMTUDRUBLPAFHZPTHVBKWDMGVDBWWVFUCTFVLXTBGSOPHCAWQIAHDGFBKYNCLRFBDDDGCGIKHRAHLPTBGDVPHDMQXZFBCIUBFIAUHVBBMEWGUXALDZFTWDFVDMUBQIAFDRTBXRFBSVJURRAFCYOGCXJTHYTGCHFBFESVHWAFRRUBOIAODVJBHXBKWDBW DHCOISGVDAGQDHTDREKVWBPWDAKODQGQWBBTYAKODFVDMUBHRAFHLPTVDEGCPBBVSDKHXFBHXAFHWFUSISCCHA CVFPWVFTCNBODMTBCMMBUINCUUVCCUVGCPBBVSDKHXFBPEJPWMFPWDJTUINKVWJDOINGQXAGQDEGKSSUCHAGOPFBGIVZCGMCVWFUCHAJRQNGVDAEHYYBTYJBODBVWERWHRUBHXAEHYYBTYJBOEAIDVEGQXABCMMBQDBXDMUBOIAEKSJZCUVBHRUTHDDGVDEGXAAEOETUHWABCIOBPINGCXFOSWAKODTGCWFPWEJVCNFBQIAUDMTBTYFNCJPPGDEGCVJILHJVHDAFHDSGJYMCUMUGCIUBGIARUSCKWIABFSNROMRWHDEBXRFBLRFZSVJODFMGCLBKQIARRYSBFIUVHDSCFIAFHDCQKINGVDEQQXAKODFVDMUBCMMBHRUTDDECQWANDDQQOMDGCMMBADSGXWTKWDABCUVCUEOVHDBPVDJNCIUCLXAKQWQGFXFWUDJNCEWCLXAFDRTBVEALHYOGVWFBHXFBHQQNRBFBGEOUCPFUCGIKRYSOHWAFXDNKGMACYEOVCHACOPFTCTMWVDMQLRABHRUGQHPPVDOQXWAUXVAEHDNQWDGCFIAJXQBKQIASXIAPRYTBDTQNLUVKRRTBWSVVCEANCLFWUIACCNBXHVUBOEAHDGFBKYNCLRFBGIALDZFTWDDQQWJUWEJVCIOBXRAPHCAEDQBTGDACYIDBGIVZCTSQISOFHWAPDVJPHWAXHVTBOITSXIMNHWAORRUCLIOVCWVTCWFUCHFW DKQXITBGDFPRVNGVDGCYSSKVDAQQDTGCWFPWEJVCQBNCEANCEJUHDMCCTSGPMFTHDGQLWASXDPPCZP DMUBFITBGIVZCJPTHXTBHXAEHWAFHYYBFEWGURFUCDRWDREBMEWGUXATLEJVCDDGCUVKCIUCLXATDVFBHXAVHVSKEPFBCWFUCPFXUITBPMOEHWAUCIDCUXBKHRUBCIUBOEJUVEJGQXAXRMSBCRPPCWFWOINGQXAUHWAFHRUUCDNCLWAUHWAIHRDKYITBCIUBLPAUHDGCLWBKWDBWWSVTCHFBVSOBQI BXRAROMTUHQFPWDFRDXFBHXAUDYWCJIAERQNGCWVTCYOBPYGNHDEGCFFVHDGCXZFBCNBXHVUBVISKHYYBHXBKWDVPCHPIXIABCPPTVUVBLPATLEJVCDDBHXBKWDVPCXJIUIABGYATHWUGCDQGXDEGCGSCQIABEIBWFSVRCHFBPEDJRMSGCDMGVDDJHZFW DDCFLBPWDMGCJSQQXAGWDUQPFBPWDTWUDMGVDTQXVDKOWABHRUTHDMGVDEGXAA HYYBXRAHUSOEHQFPWDDGQXSCODQGUQBPHRUBFSNOHDVPHDFVRMMGCHFBFSMGUIABOIATHKBTGDPDVGVTCDMCCFPWFLFBSMOEHIAGWDSGGSVVDFMGCDMBDMSBGYAERQNCQHFOHRUBIISQFIAEHXAJRQNGCIUCLXAERQQQVIAFHDEGXAAUHRUKPIOVVDUTHWAULQQNHWABHXATHPBVLZFOHRUBWVFUCFPPVDAODMTBTYAKODGCLWBKWDQTHWRWHDNCXZBKVDBBISSEHDEGCPFUCIYCJISGUDABOIATHWQGFXAFHDMBDYUQUMUGCDMCCLBKQIAFHDMCCVFDHPMKRRABCIUBDDTGVDZGXAANHDWQODANHDNGXVUTHDAVRYTBOITBFVJOHWABQDFVDMFPWDRWHDEGVDGQUQFUCHFBOEATHFFNOMPPCDJNCIOXHPPRSEJVCHBPVDVPHDTQUXFBGIAHRMACYIVIOIAGWDQTRJPPGIAVRYUBFIASXMACCYOGCJPPFXJQQDECQWANCDUCWDAFHTVKVDMGCTSGPMFTCQJPLWUTHDKWVUVBDYAIDVEGCGICPTFVUIABLPAERYWTDMUBGIAOHTSKVDAFCEWGUWJQQDFVCHFBGIHQXXAVRYUBFIASXMACYEJVCJSCQGIKCYOGCJPKVDMGCWFWLPANHKBNCHVBPEMBCMMBHXBKWDBDVSMWCIUBQDBFPIUVDMUBSETBGDFZFIQVLSOUCDEBXRFBSESVCMMBGMTCLXABCDANHDGQQGUKRROCLVFBQIARHYUBVIAVUSNRHVABCPFBPEHKVXSCWDOBDDKCPEJUCXPTWDABCHACXXSGCTBTWDJNCHJUDMUBCDABFIVZCGJBVSOVCMSTHQFFLECNHQFPWDQGUHVUCDSKHRAFHDCQQDOBHRARHYUBVSSVLVABCDJNCTBTWEHGDMUBSPFKQINGQXANCSQKQMPPCHFBFITBHWQTLXTBHAUTHQFUCUVKCEUVUMCWHRUBDDMCCPPKCLVODMOGCNFBQIAUDMTBTYFNCTPWYSJTCHFBIEJTHDPWCDTKCPAQQDWGXXABGIAERRTVDXFTCHFUCHBOQITBCIUBTYJBPIUVHRUBXRAUWBYBDYADDWAFHDMCCWPELIUGCDJNCIUCLXAUWSJSXIABVISKHYYBCEVUWISGCDATHZFWUDUTLWUGCDAJXQCNHDFVCLBWWEJPCGPOPIANHWAHDRBVLUVGVDAURRATHKBTGDFVDMUBXRFBYVJNOIABFIMCCIUCLXAHUSJFCIUBFIMCCTFTFEJVCDUQXXFBVEAXLIAVHRBKWDECQWAEHWAFHYYBPSUUCDAXHMMNHVAGWDTWUZFKOPFTCDJNCEWCLXAKQXSQGYJVCPBBOMHPHDETRMUGCHBPVDDGCUVBLPA CEAFHDQNXWAVRVUWHYYBDYAORREGCDAKODBXDMUBOEAERRTELIOEHDEGCWPPCYUKOMUGCDMCCVFNLKJQQDEGCWFUCJPPFXJQQWABHXAKODFVDMUBHWQKRRAERQNGCSOBHWUBSVFVUIABPEMJHYSBDDRWLDUQPFBKWDTQXWAUDDNCLRABCMMBHYUBDVSGWIAURRARHVFBVDFXDHBPWDEWCFBIQIAGWDEGQSOEHDTCCQFTHDFPCVVRWYSGCHFBEEOBCIUBLPANCIVVCJBKWDBXHGAEHXUGCWPTWIAFHDTCWMTHDGUKRRAKQXFTLIVTHDRWHDEQQRFBOEAXHVUWCDBXHGAEHPBBXRFBYMFBGIARUMWCWMPPVDANCMTQOINGQXABODBDQIHCWMPPCDMCCGICVXFVHDALDQBKVDVPHDEKVXSCFXJQQDAECIUCLXANHDEGYSJTCMNROEDCEPFBCPBBSSMKFIAERQQTLWFBFSNOHDMGVDTRDVUKDXFUCGPOSVFPDMFPWDTRDVUGCDVPCKVGWDJOSMUQAECNHDAWQIAJRROGWIUGCJBTRYDJHDAWQDNQXGICUHAODVNQUIFPCDCTXXVUCHBPVDWKGSDSCXPWWIANDDQGUWPPQIAFHDKCYISVCIYRUMNCLXANCLPOPIASXMAGSMFBHXASXMAUHDEGUSCGCDMBHGPNHDN VXJSXIAFHDKQVIQJCHFBPEJUWVFBCPBSXIMNHDBBFIUVHDFRRUVGCETUDMTQQRBKWDEGCLBWWIAERWNQJSOKHDDGCUVBRRACSTFNDMUBOITBMSVTQEVZCYMVUETBCRAGXXARDWAODRRWHDEGCHJTHDRWHDKCYISVCIUCLXAWQDT PFPNHDAQQDOGCZP DMUBSETBVSOBIVPPWDRWLDEKVTBTDMTUDMUBVSVUCWPPCGICSIBWCDPPCRFBYSZCLXARDWAUHWA HYYBTYJBVIARHVECLIOVCWPWVDTGVDTQXVDKOWABRRAPHDWQAEJVCTBUCWPPCQFPWSOBTYJBSPPPJIBKWDECQWAUDDDTDZBVHDAQQDOGCZP DMUBSETBVITBPEJPVDRWLDSGQXSCLIOVCHBPVDTGVDNCQGIGVDAQQDOGCZP DMUBSETBVEAEDROGCUVBLPARRVUCLXAURYTBVEATHHJPJSUGCDNCLWANCSDEDWJQQDWGQYFBCSOBYSZCLXAVRYUBDDDQXTAURVUKUDEGCXPWWIAEHXUGCSNDUIABFSNOHDEBXRFBHQCWVGBFHDAWQDGTRRUBDRHWOIVZCIUBHXSQLXABXRATHKBTGDGWQITVHDAWQDNGQXPPCQFPDGBPWDAFHWAODMOUCIOQUQFUCDAGWDVPCKPWUHJPCQPPVXSWHYYBCDTGVDNQPIOVVDEGCPPKVMSBCUVKCIUCLIOVCTFWCJSGTYFPWWABWSVVCIOBKEJUVEOVCPFUCPJXUITBCMMBOMTCLXABCGFBTYJBIEJVCUVBLPAPCIUCLXARDWAERQQNHXFOHRUBLPMGWXSGCDDGOEAUHDSGFSOPDMTUDMUBDDRWHPRWHDFOSLBUHDECQWANDDQCUSMGCMMBQDBXDMUBDYDWQDWKFIABQSVUCPACYSOUCHJVCDRWDREBLPAGWEJVCGPPWIOVCHFBOYJBCMMBVDBEFSSFDMUBXRFBSVJUHDEGCXBDDGABLPAVHRBKWDBBODIWPEOKWIARDVANDDPPCGPOSVFPGVBBVEOUCTFKQIASXIALDZFTWDFVDMUBODFHIVPKCHFBWSVVHDDGWXFBFPBUVIASXIANDDTVDXJUWMRWHDBPQYFNOIAFXDNKQMTVHVFBGIANDDKWVXJEHDEGVMHPHDTQXWANDDSWEVJSXIABCKFPVDTCQWACYIVBCPFBQSNBGIALDZFTWDQTRRPPFIANHWAOHXUCLXAGQDEGUSVVHDABOEAHDGFBGIALDZFTWDBRSESCLWTCQXANHWARHXSKIMBKWDUGODFVDMUBFIUBKSNOHDGQUQJFDFMGCNBXHVUBHXBKWDDQPQFBXRABLPAVRYKQXVTBIMYGCWVTCQABPEEGOIJPHDABLPAROIJPCHFBVSVRFSOBHXAFHDDQQNFEWYSGVDAOCDNCGIMGLRFBDZBKWDGKQMARDVAUCIOBDTFTFIWQLVABPEJUCMMBVINDOEASXIAEHPBBIYUBLRTKJRJHLEOVCTPWUDMWLDAKODOGCJJVCTBUCQFOHDVPHDRWHWUKRRACCNBXHVUBCMMBQIANHDDJHVDJDMUBQMAPHDMBHZJVDMUBCIUBLPARRVUCLXABVEOUCTBTDMUTHDZBIEJTHDBVWIOVLSOBCGFBUIHCUHAIHRBPWDFVCTSGVUVGCTFUDRUBCMMBWVBKWEJVCNBXHVUBFSNOHDUQXXANHDNQQHFBCEWGFDBKVEOEHDFVCFPPWIA
 
 
Je ne demande pas une réponse directe, je cherche à comprendre car j'ai jamais décrypté auparavant. Les calculs du code n°1
tel que  :
 

Code :
  1. for(int i=0;i<buffer.size();i++){
  2.   if(buffer[i]==' '){
  3.    buffer[i]=tabCar[clef[i%clef.size()]-'A'+1];
  4.   }
  5.   else{
  6.    buffer[i]=tabCar[(buffer[i]-'A'+1+clef[i%clef.size()]-'A'+1)%27];


 
me dérangent, je ne sais pas vraiment comment on fait des opérations avec les lettres.
 
 
Merci d'avance pour un peu d'aide.
 
 
 
 
 

Reply

Marsh Posté le 09-10-2015 à 19:58:53   

Reply

Marsh Posté le 10-10-2015 à 21:08:40    

C'est un système de chiffrement de Vigenère, cherche sur le net les méthodes de cryptanalyse qui permettent de casser le code.
 

Reply

Marsh Posté le 10-10-2015 à 21:46:13    

Merci de ta réponse, je m'y suis attardé un peu et j'ai finit par comprendre :) :bounce:

Reply

Marsh Posté le 11-10-2015 à 16:16:08    

Je me suis amusé à décrypter le texte, il s'agit d'un extrait d'un roman très connu de Victor Hugo.

Reply

Marsh Posté le 11-10-2015 à 21:20:09    

j'ai pas encore trouver ^^, je chercherai plus tard car malheureusement je n'ai pas que celui la à faire :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

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