SI4 – LES BASES DE LA PROGRAMMATION LANGAGE PYTHON

publicité
SI4 – LES BASES DE LA PROGRAMMATION
LANGAGE PYTHON
BTS SIO
Test : LE CODAGE AFFINE
Contexte :
La cryptographie est une des disciplines de la cryptologie s’attachant à protéger des
messages (assurant confidentialité, authenticité, et intégrité) en s’aidant souvent de
secrets ou clés. (source wikipédia).
Le codage affine ou chiffre affine est une méthode de cryptographie basée sur un
chiffrement par substitution. Il s’agit d’un code simple mais aussi un des plus faciles à
casser.
Le chiffrement est la transformation à l’aide d’une clé, d’un message en clair (texte
clair) en un message incompréhensible (texte chiffré) pour celui qui ne dispose pas
de la clé de déchiffrement (encryption key).
Objectif :
On souhaite analyser le principe du codage affine et réaliser un programme rédigé
en python pour coder un message.
Principe du codage affine :
-
Chaque lettre de l’alphabet est associée à son rang :

A est associé à 1, B à 2……..Z à 25.
 Soit x, entier qui correspond à ce nombre.
A B C D E F G H I J K L
M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-
2 entiers a et b sont choisis comme clé. Chaque lettre est d’abord remplacée
par x puis chiffrée par le calcul du reste de la division euclidienne par 26 de
l‘expression affine (ax+b), soit (ax+b)%26.
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
1
BTS SIO
SI4 – LES BASES DE LA PROGRAMMATION
LANGAGE PYTHON
Exemple :
Pour chiffrer le mot CODE grâce au code affine de clé (17,3), il faut procéder ainsi :
a) CODE  2 ; 14 ;3 ;4
b) y = 17x + 3  37 ; 241 ; 54 ; 71
c) 37%26 = 11 ; 241%26= 7 ; 54%26 = 2 ; 71%26 =19.
d) Retranscription en lettres  L H C T
Le codage affine de clé (17,3) de ‘CODE’ est ‘LHCT’.
Activité:
On souhaite écrire un programme qui code un message avec la clé (17,3). Ce
programme se composera de 3 fonctions :
-
convertirChaine_enListe(message) qui transforme une chaîne de caractères
en une liste de nombres.
-
convertirListe_enListeCode(listeNombres) qui transforme une liste de
nombres en une liste de nombres codée.
-
convertirListe_enChaine(listeNombres) qui transforme une liste de
nombres en une chaîne de caractères.
et du programme principal qui devra :
-
lire une chaîne de caractères dans un message
-
convertir le message en une liste de nombres en appelant la fonction
convertirChaine_enListe(message).
-
convertir la liste de nombres en une liste de nombres codés en appelant la
fonction convertirListe_enListeCode( liste_de_nombres)
-
convertir la liste de nombres codée en une chaîne de caractères en appelant
la fonction convertirListe_enChaine(liste_de_nombres)
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
2
SI4 – LES BASES DE LA PROGRAMMATION
LANGAGE PYTHON
BTS SIO
Le programme principal est le suivant :
message=input("Entrer le message à coder:\n")
listeNombres=convertirChaine_enListe(message)
print(listeNombres)
 Réaliser la fonction convertirChaine_enListe(mes) :
def convertirChaine_enListe(mes) :
………………………………………….
return liste
 Réaliser la fonction convertirListe_enListeCode(listeNombres)
Ajouter l’appel de cette fonction dans le programme principal ; la fonction retourne
une liste appelée listeNombresCodes.
Traduire en Python l’algorithme suivant :
fonction convertirListe_enListeCode(listedeNombres) :
l  longueur de liste-de-Nombres
liste  [ ]
Pour i allant de 0 à l :
nombreCode  (17*listeNombres[i] +3)%26
ajouter à liste (nombreCode)
retourne(liste)
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
3
BTS SIO
SI4 – LES BASES DE LA PROGRAMMATION
LANGAGE PYTHON
 Réaliser la fonction convertirListe_enChaine(listeNombres)
Ajouter l’appel de cette fonction dans le programme principal ; la fonction retourne
une liste appelée ChaineCodes.
Traduire en Python l’algorithme suivant :
fonction convertirListe_enChaine(listeNombres):
tableau
[”A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,”S”,”T”,”U”,”V”,”
W”,”X”,
l  longueur de listeNombres
message  ” ”
Pour i allant de 1 à l :
numero  liste de nombres[i]
lettretableau[numero - 1]
message message + lettre
retourne(message)
Lycée des Métiers Jacques Prévert
Combs – la – Ville
Section BTS Services Informatiques aux Organisations
4
Téléchargement