sylargh | 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 :
- #include "fonctions.h"
- void main(){
- srand(time(NULL));//initialisation du générateur de nombre aléatoires
- string buffer;
- char temp[5];
- string clef;
- string tabCar=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- cout<<"Le texte sera crypte avec la clef: "<<endl;
- cin.getline(temp,5);
- clef=temp;
- ifstream fichier_entree("monTexte.txt", ios::in); // on ouvre un fichier en lecture
- if(fichier_entree) // si l'ouverture a réussi
- {
- while(!fichier_entree.eof()){
- string temp;
- getline(fichier_entree,temp);
- buffer+=temp;
- }
- fichier_entree.close(); // on ferme le fichier
- nettoyer(buffer);//transformation de buffer en une chaine ne contenant plus que des espaces et des majuscules
- cout<<buffer<<endl;;
- //Cryptage
- for(int i=0;i<buffer.size();i++){
- if(buffer[i]==' '){
- buffer[i]=tabCar[clef[i%clef.size()]-'A'+1];
- }
- else{
- buffer[i]=tabCar[(buffer[i]-'A'+1+clef[i%clef.size()]-'A'+1)%27];
- }
- }
- ofstream fichier_sortie("monTexteCrypte.txt", ios::out); // on ouvre un fichier en ecriture
- if(fichier_sortie){
- fichier_sortie<<buffer;
- }
- else{
- cerr << "Impossible d'ouvrir le fichier de sortie!" << endl;
- }
- }
- else cerr << "Impossible d'ouvrir le fichier d'entree!" << endl;
- _getch();
- }
|
[#ff0000]et le second :
Code :
- #include "fonctions.h"
- bool estNonAlpha(char c){
- if(c>='a'&&c<='z') return false;
- if(c>='A'&&c<='Z') return false;
- return true;
- }
- void enMaj(char &c){
- c=toupper(c);
- }
- void nettoyer(string &texte){
- //1-Elimination des accents et de la cédille
- replace(texte.begin(),texte.end(),'é','e');
- replace(texte.begin(),texte.end(),'è','e');
- replace(texte.begin(),texte.end(),'ê','e');
- replace(texte.begin(),texte.end(),'à','a');
- replace(texte.begin(),texte.end(),'â','a');
- replace(texte.begin(),texte.end(),'ô','o');
- replace(texte.begin(),texte.end(),'ü','u');
- replace(texte.begin(),texte.end(),'û','u');
- replace(texte.begin(),texte.end(),'ù','u');
- replace(texte.begin(),texte.end(),'ï','i');
- replace(texte.begin(),texte.end(),'î','i');
- replace(texte.begin(),texte.end(),'ç','c');
- //2-Elimination des caractères non alphabétique
- replace_if(texte.begin(),texte.end(),estNonAlpha,' ');
- //3-Ecriture des mots en majuscule
- for_each(texte.begin(),texte.end(),enMaj);
- }
|
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 :
- for(int i=0;i<buffer.size();i++){
- if(buffer[i]==' '){
- buffer[i]=tabCar[clef[i%clef.size()]-'A'+1];
- }
- else{
- 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.
|