• Aucun résultat trouvé

II.1 Une liste de listes pour concrétiser la table de Vigenère

N/A
N/A
Protected

Academic year: 2022

Partager "II.1 Une liste de listes pour concrétiser la table de Vigenère"

Copied!
1
0
0

Texte intégral

(1)

BTSSIO:Correction : TD 12 Cryptographie : Vigenère 2017-2018

I Chiffre de Vigenère

https://fr.wikipedia.org/wiki/Chiffre_de_Vigenère

II On décortique le problème

II.1 Une liste de listes pour concrétiser la table de Vigenère

• Il s’agit ici de « fabriquer » une fonction ayant un entier debutcomme paramètre. Elle doit renvoyer une liste de lettres dans l’ordre alphabétique commençant par la lettre d’indexdebut. Il s’agit d’une fonction qui permet de créer n’importe quelle ligne de latable de Vigenère.

Une

solution

pos sible

def LigneTableVigenere(j):

ltv=26*[0] # initialisation d’une liste avec 26 zéros for i in range(26):

ltv[i]=chr(97+(i+j)%26) (*) return ltv

ou(*) ltv[i]=alphabet[(i+j)%26]

si on a déclaré la variable alphabet="abcdefghijklmnopqrstuvwxyz"

• On est maintenant capable de construire n’importe laquelle des lignes de la table de Vigenère. Construire une fonctionTableVigenere()à partir d’une liste videTVen utilisant la fonction précédente.

Une

solution

pos sible

def TableVigenere():

Table=[0 for i in range(26)] # initialisation d’une liste avec 26 zéros for k in range(26):

Table[k]=LigneTableVigenere(k) return Table

II.2 Coder en utilisant la table

• Commençons par fabriquer une fonction CleRepetee(sentence,key) qui permet de renvoyer une chaîne de caractères qui sera composée de la chaînekeyécrite autant de fois qu’il y a de lettre dans la chaînesentence.

Une

solution

pos sible

def CleRepetee(sentence,key):

clerep="" # initialisation de la chaîne de caractères sentence for i in range(len(sentence)):

clerep=clerep+key[i%len(key)] (*) return clerep

(*) i%len(key) a permis de « garder » l’index de key entre 0 et len(key)-1

• Il ne reste plus qu’une dernière fonction, que l’on appelleraVigenere(messclair,cle), et qui renverra le mes- sage codé par la méthode du chiffre de Vigenère.

Pas de trame pour cette fonction ; une contrainte néanmoins, vous devrez utiliser les deux fonctionsTableVigenere() et CleRepetee(sentence,key)précédemment codées.

Une

solution

pos sible

def Vigenere(messclair,cle):

alpha=’abcdefghijklmnopqrstuvwxyz’

TV=Table()

clerep=CleRepetee(messclair,cle) messcode=""

for i in range(len(messclair)):

messcode=messcode+TV[alpha.index(messclair[i])][alpha.index(clerep[i])] (*) return messcode

La méthode .index appliquée à la variable alpha permet de retourner l’index du caractère mis entre parenthèses dansalpha.index(...)

My Maths Space 1 sur 1

Références

Documents relatifs

Il faut donc faire défiler le message dans buffer, c'est à dire copier message dans buffer à partir d'une position donnée, afficher son contenu pendant un instant donné

Écrire les réactions des différentes phases (initiation, propagation, terminai- son). • Les vitesses relatives de réaction des différents hydrogène sont dans les proportions :

On retrouve l’AC en France sous différents vocables : l’agroé- cologie du Cirad, acteur majeur de leur mise au point avec la recherche brésilienne, l’agriculture

Dans la liste des périodes possibles, on trouve avec une période telle que abcde les périodes bcdea, cdeab, deabc, eabcd ; d’où 10 périodes multiples de 2439, compatibles avec 41

Avec cinq graduations intermédiaires au minimum, celui-ci donne 40 configurations possibles qui incluent les deux qui viennent d’être mentionnées.. Pour L variant de 24

Figure 4 – Les quantités de sels nutritifs (ici les nitrates) dans les eaux de surface de l’océan mondial sont réparties de manière inégale : de façon générale, les eaux

- Ecrire une fonction récursive qui calcule le PGCD de deux entiers positifs. On suppose qu’on ne peut effectuer que

Une pile est représentée par une structure regroupant un entier, pour le sommet, et un tableau de MAX_PILE éléments (ici, des caractères). II.1- En utilisant la