Outils pour utilisateurs

Outils du site


nsi:tds:cryptographie:chiffre_vigenere

Ceci est une ancienne révision du document !



Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Chiffre de Vigenère

Il s'agit d'une méthode décrite par le diplomate Blaise de Vigenère dans son traité sur les chiffres paru en 1583. C'est une version plus complexe du Chiffre de César et c'est un 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. 1ère lettre de la clé V. On applique un décalage A → V. La première lettre du message, D → Y
  2. 2e, I ⇒ décalage A → I. La 2e lettre du message E → M
  3. 3e, G ⇒ décalage A → G. La 3e lettre du message (ignore l'espace) F → L
  4. 4e, E ⇒ décalage A → E. La 4e lettre du message A → E
  5. 5e, N ⇒ décalage A → N. La 5e lettre du message M → Z
  6. 6e, E ⇒ décalage A → E. La 6e lettre du message I → M
  7. 7e, R ⇒ décalage A → R. La 7e lettre du message L → C
  8. 8e, E ⇒ décalage A → E. La 8e lettre du message L → P
  9. 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. 1ère lettre de la clé V. On applique un décalage V → A. La première lettre du message, Y → D
  2. 2e, I ⇒ décalage I → A. La 2e lettre du message M → E

À faire

Fonction shift_letter

Vous devez écrire en Python une fonction shift_letter(letter, n)

  • letter est un caractère,
    • si c'est une lettre majuscule de A à Z, sans accent, elle sera décalée
    • sinon elle sera inchangée
  • n est l'amplitude du décalage, positif ou négatif, n'est pas limité,
  • la fonction renvoie le résultat du décalage (ou pas de décalage si pas une majuscule sans accent)

Vous pourrez utiliser les fonctions

  • ord(letter) qui pour un caractère donné renvoie son code entier,
  • chr(code) qui pour un code entier donné renvoie le caractère correspondant,
  • le modulo % car n'oubliez pas qu'après Z on revient à A, il y a une idée de cercle et dans ces cas là le modulo est souvent très utile.
2021/07/05 11:04 · goupillwiki

Cette fonction est identique à celle vue dans le 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)
nsi/tds/cryptographie/chiffre_vigenere.1648319140.txt.gz · Dernière modification : de goupillwiki