module td_1a.vigenere

Short summary

module ensae_teaching_cs.td_1a.vigenere

quelques fonctions à propos de la séance 3

source on GitHub

Functions

function truncated documentation
CasseVigenere Appelle les deux fonctions DecodeVigenereLongueurCle() et DecodeVigenereCle() pour casser le code de Vigenère. …
code_vigenere Crypte et décrypte le code de Vigenère sachant la clé connue.
CodeVigenere  
DecodeVigenere  
DecodeVigenereCle Détermine la cle du message code, connaissant sa longueur, on suppose que la lettre E est la lettre la plus fréquente …
DecodeVigenereLongueurCle Cette fonction determine la longueur de la clé, elle repère les groupes de trois lettres qui se répète dans le message …
PGCD Détermine le PGCD de deux entiers.

Documentation

quelques fonctions à propos de la séance 3

source on GitHub

ensae_teaching_cs.td_1a.vigenere.CasseVigenere(message)[source]

Appelle les deux fonctions DecodeVigenereLongueurCle et DecodeVigenereCle pour casser le code de Vigenère.

Paramètres:message – message codé
Renvoie:message décodé (sans la clé)

source on GitHub

ensae_teaching_cs.td_1a.vigenere.DecodeVigenereCle(code, l)[source]

Détermine la cle du message code, connaissant sa longueur, on suppose que la lettre E est la lettre la plus fréquente

Paramètres:
  • code – message codé
  • l – longueur probable de la clé
Renvoie:

message décodé

source on GitHub

ensae_teaching_cs.td_1a.vigenere.DecodeVigenereLongueurCle(message, mot=3)[source]

Cette fonction determine la longueur de la clé, elle repère les groupes de trois lettres qui se répète dans le message codé et suppose qu’il y a une très forte probabilité qu’un même groupe de trois lettres soit codé avec les mêmes trois lettres du message et les mêmes trois lettres de la clé.

message  : .....DES...........DES...........DES.........DES....DES
cle      : ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD
code     : .....EGV.........................EGV.........EGV..........
distance :      <----------24--------------><----8----->

La longueur de la clé divise le PGCD de 24 et 8.

Paramètres:
  • message – message codé
  • mot – longueur des séquences de lettres consécutifs dont on étudie la féquence
Renvoie:

longueur probable de la clé

source on GitHub

ensae_teaching_cs.td_1a.vigenere.PGCD(m, n)[source]

Détermine le PGCD de deux entiers.

Paramètres:
  • m – premier entier
  • n – second entier
Renvoie:

PGCD

calcul du PGCD avec la méthode des soustractions

La fonction qui suit est l’implémentation en Python de la méthode décrite ici : Algorithme de calcul du PGCD par soustractions successives.

<<<

def PGCD(m, n):
    if m == 1 or n == 1:
        return 1
    if m == n:
        return m
    if m < n:
        return PGCD(m, n - m)
    return PGCD(n, m - n)


print(PGCD(50, 40))

>>>

    10

source on GitHub

ensae_teaching_cs.td_1a.vigenere.code_vigenere(message, cle, decode=False, binary=False)[source]

Crypte et décrypte le code de Vigenère sachant la clé connue.

Paramètres:
  • message – message à crypter ou décrypter
  • cle – clé du code
  • decode – False: crypte, True: décrypte
  • binary – code et décode en binaire
Renvoie:

le message crypté ou décrypté

code de Vigenère

<<<

def code_vigenere(message, cle, decode=False):
    message_code = ""
    for i, c in enumerate(message):
        d = cle[i % len(cle)]
        d = ord(d) - 65
        if decode:
            d = 26 - d
        message_code += chr((ord(c) - 65 + d) % 26 + 65)
    return message_code


m = "JENESUISPASCODE"
c = code_vigenere(m, "DOP")
d = code_vigenere(c, "DOP", True)
print(c, d)

>>>

    MSCHGJLGEDGRRRT JENESUISPASCODE

source on GitHub