Vigenere Cipher
def rang(a): return ord(a)-65 def vignere(a, b): return(chr(65+(rang(a)+rang(b))%26)) def invvignere(a, b): return(chr(65+(26-rang(a)+rang(b))%26)) def cript(cle, a): l=len(a) res='' d=cle+a for k in range(0, l): u=vignere(d[k], a[k]) res=res+u return res def strongcript(n, cle, texte): chaine=texte for k in range(1, n): chaine=cript(cle, chaine) return chaine def decript(cle, a): l=len(a) res='' d=cle for k in range(0, l): u=invvignere(d[k], a[k]) res=res+u d=d+u return res def strongdecript(n, cle, texte): chaine=texte for k in range(1, n): chaine=decript(cle, chaine) return chaine print(strongcript(666, 'YODA', 'MAYTHEFORCEBEWITHYOU')) print(strongdecript(666, 'YODA', 'ICRTDSRNEKZJTEIWTSIH')) print('*********') print(strongcript(24, 'YODA', 'ALLELUIA')) print( cript('PRODUITSCALAIRE','LESPATIENTSDOIVENTNORMALEMENTPAYERUNEPARTICIPATIONFINANCIEREPOURLESMEDICAMENTSPRESCRITSLESSOINSDENTAIRESETCERTAINSACCESSOIRESVOUSPOUVEZDISPOSERDUNECEAMOUDUNCERTIFICATPROVISOIREVALIDEETABLIEDANSVOTREPAYSDORIGINELORSQUEVOUSVOUSRENDEZAUROYAUMEUNIAFINDACCEDERGRATUITEMENTALHOSPITALISATIONGRATUITEDUNHSCONFORMEMENTALALEGISLATIONDELUESIVOUSNEDISPOSEZPASDECETTECARTEVOUSRISQUEZDEPAYERLESCOUTSSURPRESENTATIONDELACARTEEUROPEENNEDASSURANCEMALADIEVOUSAVEZACCESGRATUITEMENTATOUTTRAITEMENTQUISAVERECLINIQUEMENTNECESSAIREDURANTVOTRESEJOURPOURVOUSEVITERDERETOURNERDANSVOTREPAYSAVANTLAFINDEVOTRESEJOURPLANIFIEELLENEVOUSPERMETPASDERECHERCHERUNTRAITEMENTGRATUITAUROYAUME-UNI:VOUSDEVREZPRESENTERUNEPRESCRIPTIONOFFICIELLESURUNFORMULAIREETABLIEDANSVOTREPAYSDORIGINEENVUEDUTRAITEMENTPREVUMOYENNANTQUOICELUICISERADISPENSEGRATUITEMENT')) print(cript('PRODUITSCALAIRE', 'AVGSUBBWPTDDWZZPRLCOKUEYXEHBBKELXEIEQPLVFMPBEARMFHSMCAEVQGZTPHCFYJAZEQKKEDICHMGCIKOVLBULQWFHACJHWPKIBJPWWLQMELDMALAKTIKWHKVVLVWHKPQWZWRRQJTGNSLVJBYXIZPWMSIFGVUNVJKGAFDLRPVUSZKMAINIWTVHVJDWMUEISGWWVIIAZDLSUITAISEFVHQSWYCLABWHWCSEVUTEPFIQVIGWLRVDJHNXRQAEXQVAEITZQGHMGPXDPYUJPBNIEMEEGBOYNFSICBTPLMNAAQBTWOKGMFIQNNSSNSTNGCMXUSAWEWUPWODGFSGMRVVTZMIRXVGXWPIWBWROJXDKOMVVKWJNIBDVIETSLDVAUEOXRVYGPPIJPRLCHCHFVYCPTEJXRXUKWDRHRYEFAJLYVUEQTQEYNHLENGOJAIGDMCNEVOVVHOATZQDNVCXGAKTKUQMIYIAMQNWMTOVRMVPURVJKYUWNORVGGDANQHYHGVNGGZQXJWSMASXLGOHKQCNJINMCSLUTFYKJILFIMLTRJYSKVXDUPFEMDNGDVTBEHTVMLRZSRCZUWXYDRDTBVIDPNBYMDFSCMWUIXALWQIMSWZTVTTIKJNLUEZXGTIEVNVRNHBKACKSKEHFKXUGCBOOOJRCVLQDVLRAXIHYJXRZGVDHTVATGBSEISJXTMWNCMHNZIATTWUWTETCIWNRVYNSUMHDVWKVIIAZDLSUITAISXEZJEBMWFRQZMZIRGKLIYOFFYMGRMRGJJFMXYXIGGVFEETTCGXGRDYOTILYZTHUWCX')) print('*****S->') print(strongcript(200,'PRODUITSCALAIRE', 'LESPATIENTSDOIVENTNORMALEMENTPAYERUNEPARTICIPATIONFINANCIEREPOURLESMEDICAMENTSPRESCRITSLESSOINSDENTAIRESETCERTAINSACCESSOIRESVOUSPOUVEZDISPOSERDUNECEAMOUDUNCERTIFICATPROVISOIREVALIDEETABLIEDANSVOTREPAYSDORIGINELORSQUEVOUSVOUSRENDEZAUROYAUMEUNIAFINDACCEDERGRATUITEMENTALHOSPITALISATIONGRATUITEDUNHSCONFORMEMENTALALEGISLATIONDELUESIVOUSNEDISPOSEZPASDECETTECARTEVOUSRISQUEZDEPAYERLESCOUTSSURPRESENTATIONDELACARTEEUROPEENNEDASSURANCEMALADIEVOUSAVEZACCESGRATUITEMENTATOUTTRAITEMENTQUISAVERECLINIQUEMENTNECESSAIREDURANTVOTRESEJOURPOURVOUSEVITERDERETOURNERDANSVOTREPAYSAVANTLAFINDEVOTRESEJOURPLANIFIEELLENEVOUSPERMETPASDERECHERCHERUNTRAITEMENTGRATUITAUROYAUME-UNI:VOUSDEVREZPRESENTERUNEPRESCRIPTIONOFFICIELLESURUNFORMULAIREETABLIEDANSVOTREPAYSDORIGINEENVUEDUTRAITEMENTPREVUMOYENNANTQUOICELUICISERADISPENSEGRATUITEMENT')) print(strongdecript(200, 'PRODUITSCALAIRE', 'GHWOCZTYVTXDULLIOTNEYPUKPHDNKGMMXCATHHAEYDBSJSFDCPWRQQZMLLRVDRBVSUNCWKOXDRJMMZOZCXGFOVTEXDEOPBDLZRUCDYONBINLHQFEIEIAMMKTFVEGIHEODYYJBEPYKRSQOMVDKPNUJIUMXMSGIKUUEKGPFRKEGQFKRCAQRCZJZOKUTMHRQUWUUOBNGEWQOZSJFTGLPNOABRYHZMUPXKTRTWWCZLAFNZZBEDPNWNTVEFYOXAPUFTFXSPXIJBTUSNPHSYBKAMDWUZPPSYRNUTLYCADEINLRHBEXJVFJUIBRQIMQALVUKOKNKVRDRNCOUPSAFGOEESBMTJSNOBCJZURVJWWZANZHDJLWLVIWUJSIDTUBJORHFTSRNRXGRYDXNYRLJWZQLPDUUWARELYSVURSYQYQXEYWCKJQFHNBJDGBJJILOCLJPYLDRCJDEYKFVTHDRNMOXMKYGIKEIVOGYZCSMXQEIWDUGXFGSQYLHQAEIJCHTYWONEBODSXLXUJUOWLWPXZHZVJGCZUZDXZWCTYLCYCIYFFPJLWJRIMOUDCWLMQIXTIIOSBFABAMXXRBSAKXNLJIJEOZNEPDCXJFFGRRYLLZHDCVMVHGQUDLRTQFXLATUKHEBEHECCYOQTXXHTCJQKZHPSLAAGCEQXBJGSROLTUUVBXBCTXNHKKPTNRGDWCEGKOMAJPSAXQPGOJBOEEZPXYMQMFIQFRXBWEPVSVENAHNDMEIUCXKWIBEBLMFKFWWTMMWHEMJXOSXTDGXXZWTOQVETKIONQUJGKNGUWSZBDQXCSORPG')) print(strongdecript(20, 'PRODUITSCALAIRE', 'KPYUQPFIZTTDKTTWGZFCEHICBZJJKGIIFQKBRTCOWZVKTLEDTTGUYAJPHNYTZARBWFCCPZXWNEIKMETLMOANHWYVJDSQOLTWGSAOHHZLQPBOKVDMWKNBBFUYMJPVECYISDBFAYPQAXLJUYFABLRVOFIOJPTCKOQMTTVYXQFCWDSMTGLNYVZBZDBPXUDRMBVZWKUFQRJPCFJFAIVEXSEUUYVRXSAFGHAZODUQAAOYKHUFSSPGRBIEFGAPCEZSRQSMOZLFBNGLFILUPAHITIMUGMNSYYCUFAUZMVVNUYGUYEYGHNACPUEKIGLBOMYGCUJXBDZRCOKCWAZCPLZZXZKOUZMYIXLLGDHOJYMFODVOHVTEKCQAHPJGAFVJNFGASOCPNSOQSMQVJTOOYTJMDWBLFMJYGSIGNWFZFPEBPHDCPQEFYYQHNEANQOAVAZXLDRTUSZJYIMQQIMGWFZUKHYRWPBODGSEOLLBWTNEPNNTJFJORYXZBLHZNDPOGIQSJJHDKFAQJPTMBBXQDIYTBYUOZGONSFVGJAHRVZHKKHOZQLXCQUFDQXXHXAZEXAZTWKIFMHYBNVRNBOJJLQNMAUELCOGQBLDTEXIBXXUURRRMKJUPZIGCNQLHKOSSYFQDDHEDHIOITCSKLJXKXPQPZXMNXOPHAVRRACDGWVPOHRYKNYLWRULKSGPERAIHCEZOKVMVBNJAEVDXEZHVIUALRQSYSNANDJQXXWNXUHIVIPYCUPXNMHVWJORMGPQDGCEETTELOFUGJWPFQOUWOOJDTUAZLYNSBXISBWCTPSCODUJZLBA')) print('*****') print(decript('PRODUITSCALAIRE', 'PMUVOJUORTODEQDPMRUILVANQHKXAJTCIGWOKTJSJTQCOECJJPWCRLZACVAXPYOKFBMBEUFAKCBROOLARKNZBLEPTEHOMILPGDFTCDAMSQXMGUKIPVILCXGSSAHZWYIHVPAPHGNYAEORIOSFYRUWEQGMVLOSYGPWWHHOZUZXJXAANTXHJSTIBWGYKEXOLEQIATESODPVIGHEOMBSOOAADPQRZJUFIUWPOGXZCKLANHTQWENSNJZYDARMWYQZFWRLVDWIXTEDWPBAFTUNXUMYKTQKVYRNLZBXDOBTXQRGBEZGBGSINYXBZASSDTMJUMSJZAQJROMCOHQMHEDGJVRXVGXNLYMCOVUNWRKNVFUHJSSRZEFOESREFHDGXYQKQNBFSYTOTIAUSMLWLQEWQWIEIMSMIIWRYKWCPATYESIPSOOMWHLPLLQEWRMEUMWWCGLRCZZINCJTHWGZXPBBOFORIQFHOLNHSKCMDHFLCHXSZVVALQIGCMMSBSUELQIFARAUXUWDMWFCHQERBBNQPSKSEFYCKIFZTFUZKYOQZXVJUSLPTHMCAKMYOGXMTLLZEWPBQVLVEICPPYCKKYFMMHVGPASIADVTPPVDFDAJRGYVBRVHPNQHJYHKMLPCSBZOGDBWUMEEBHYDMLAXSLTJCYOQTJMZSVNSFXCYWVMSOTURLGCEMAQOIQNFJIDOPDGXMATAAEBLFRPFAGEUDAQDYGLQGDWZPMDEVRUBYKOUADDOHZHREAPHXLYSMHAOKJUMZABKPCFDLZXPTQUVMCNESBWQVZCLLJDPAGUZDQCDMAWCZD')) print(decript('PRODUITSCALAIRE', 'AVGSUBBWPTDDWZZPRLCOKUEYXEHBBKELXEIEQPLVFMPBEARMFHSMCAEVQGZTPHCFYJAZEQKKEDICHMGCIKOVLBULQWFHACJHWPKIBJPWWLQMELDMALAKTIKWHKVVLVWHKPQWZWRRQJTGNSLVJBYXIZPWMSIFGVUNVJKGAFDLRPVUSZKMAINIWTVHVJDWMUEISGWWVIIAZDLSUITAISEFVHQSWYCLABWHWCSEVUTEPFIQVIGWLRVDJHNXRQAEXQVAEITZQGHMGPXDPYUJPBNIEMEEGBOYNFSICBTPLMNAAQBTWOKGMFIQNNSSNSTNGCMXUSAWEWUPWODGFSGMRVVTZMIRXVGXWPIWBWROJXDKOMVVKWJNIBDVIETSLDVAUEOXRVYGPPIJPRLCHCHFVYCPTEJXRXUKWDRHRYEFAJLYVUEQTQEYNHLENGOJAIGDMCNEVOVVHOATZQDNVCXGAKTKUQMIYIAMQNWMTOVRMVPURVJKYUWNORVGGDANQHYHGVNGGZQXJWSMASXLGOHKQCNJINMCSLUTFYKJILFIMLTRJYSKVXDUPFEMDNGDVTBEHTVMLRZSRCZUWXYDRDTBVIDPNBYMDFSCMWUIXALWQIMSWZTVTTIKJNLUEZXGTIEVNVRNHBKACKSKEHFKXUGCBOOOJRCVLQDVLRAXIHYJXRZGVDHTVATGBSEISJXTMWNCMHNZIATTWUWTETCIWNRVYNSUMHDVWKVIIAZDLSUITAISXEZJEBMWFRQZMZIRGKLIYOFFYMGRMRGJJFMXYXIGGVFEETTCGXGRDYOTILYZTHUWCX')) print(decript('EPIMORPHISME', 'PTABOKXLVLEHZMNTNMVSEFSOSUZRGINMVDUYIBEEMXCGTRNVSCFZGIPKXEKMDBZZYEFOMHZGPAYEEWHDIVKTIFWYXKHFMFUUMGLLMJWGMGUHVGTIVJEUGXUWFBRMF'))