module td_1a.vigenere
#
Short summary#
module ensae_teaching_cs.td_1a.vigenere
Quelques fonctions à propos d’une séance 3.
Functions#
function |
truncated documentation |
---|---|
Appelle les deux fonctions |
|
Crypte et décrypte le code de Vigenère sachant la clé connue. |
|
|
|
|
|
Détermine la cle du message code, connaissant sa longueur, on suppose que la lettre E est la lettre la plus fréquente … |
|
Cette fonction determine la longueur de la clé, elle repère les groupes de trois lettres qui se répète dans le message … |
|
Détermine le PGCD de deux entiers. |
Documentation#
Quelques fonctions à propos d’une séance 3.
- ensae_teaching_cs.td_1a.vigenere.CasseVigenere(message)#
Appelle les deux fonctions
DecodeVigenereLongueurCle
etDecodeVigenereCle
pour casser le code de Vigenère.- Paramètres:
message – message codé
- Renvoie:
message décodé (sans la clé)
- ensae_teaching_cs.td_1a.vigenere.DecodeVigenereCle(code, lc)#
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é
lc – longueur probable de la clé
- Renvoie:
message décodé
- ensae_teaching_cs.td_1a.vigenere.DecodeVigenereLongueurCle(message, mot=3)#
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é
- ensae_teaching_cs.td_1a.vigenere.PGCD(m, n)#
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
- ensae_teaching_cs.td_1a.vigenere.code_vigenere(message, cle, decode=False, binary=False)#
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