====== Chiffre de Vigenère ====== {{ vigenere.jpg?nolink&200|}} Il s'agit d'une méthode décrite par le diplomate [[https://fr.wikipedia.org/wiki/Blaise_de_Vigen%C3%A8re|Blaise de Vigenère]] dans son //traité sur les chiffres// paru en 1583. C'est une version plus complexe du [[nsi:tds:cryptographie:chiffre_cesar|Chiffre de César]] et c'est un chiffre symétrique. {{page>nsi:terminales:securite:chiffrement_symetrique_asymetrique#Chiffre symétrique}} ===== Méthode ===== Dans le chiffre de César, on décalait l'alphabet d'une certaine quantité. Dans le chiffre de Vigenère on fait de même mais le décalage change à chaque lettre. La clé n'est pas un simple nombre mais un mot ou une phrase. ==== Exemple ==== **Message :** De famille connue, et noble depuis le quinzieme siecle, son pere, Jean, controleur ordinaire des guerres, lui fait donner une education classique tres poussee, l’envoyant pour cela a Paris. //J'ai retiré les accents.// **Clé :** VIGENERE On parcours la clé et le message simultanément. - 1ère lettre de la clé V. On applique un décalage A -> V. La première lettre du message, D -> Y - 2e, I => décalage A -> I. La 2e lettre du message E -> M - 3e, G => décalage A -> G. La 3e lettre du message (ignore l'espace) F -> L - 4e, E => décalage A -> E. La 4e lettre du message A -> E - 5e, N => décalage A -> N. La 5e lettre du message M -> Z - 6e, E => décalage A -> E. La 6e lettre du message I -> M - 7e, R => décalage A -> R. La 7e lettre du message L -> C - 8e, E => décalage A -> E. La 8e lettre du message L -> P - 9e, on recommence à V => décalage A -> V. La 9e lettre du message E -> Z - ... **Message chiffré :** Ym lezmcpz kurayv, io vufyi uikcow yi hydvfmrqv wdmipr, wfr kmxi, Wirr, xwtxescipz uvqmeedzk hrw xyzzxif, plm aiox qserzz arr iuyxizmbr tpvaymdyv xmmy tbyjwzm, r’iazfcvvz tbyi gztg e Ceimn. ==== Déchiffrement ==== Même principe mais dans l'autre sens. - 1ère lettre de la clé V. On applique un décalage V -> A. La première lettre du message, Y -> D - 2e, I => décalage I -> A. La 2e lettre du message M -> E - ... ===== À faire ===== {{page>nsi:tds:cryptographie:chiffre_cesar#Fonction shift_letter}} Cette fonction est identique à celle vue dans le [[nsi:tds:cryptographie:chiffre_cesar|chiffre de César]]. Vous pouvez la reprendre si vous l'avez déjà faite. Pour réaliser un décalage A -> I il suffit de choisir ''%%n = ord('I') - ord('A')%%''. ==== Fonction cypher ==== Vous devez écrire en Python une fonction ''%%cypher(text, clé)%%'' * ''text'' est la chaîne de caractère à chiffrer. De préférence, des majuscules et des caractères de ponctuation, * ''clé'' est le texte clé, en majuscule sans accent, * renvoie le texte chiffré. ==== Fonction decypher ==== Vous devez écrire en Python une fonction ''%%decypher(crypted, clé)%%'' * ''crypted'' est la chaîne de caractère du texte chiffré, * ''clé'' est le texte clé, en majuscule sans accent, * renvoie le texte déchiffré. ==== Test ==== Pour vérifier le bon fonctionnement : # message de Alice à Bob crypted = cypher("BOB, PENSE A ACHETER DES TOMATES.", "POIREAU") print(crypted) # réponse chiffrée de Bob message_reponse = decypher("EOA UI PLDPTVQE, D'TB XIINXH HZFMS EXZWJ.", "POIREAU") print(message_reponse)