vigenere.py

Created by lebourhisgilles

Created on November 05, 2020

6.96 KB

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'))