Feuille de TP1 - Université de Rennes 1

Transcription

Feuille de TP1 - Université de Rennes 1
Université Rennes 1
Année 2015-2016
Département de Mathématiques
M1, module Crypto
Feuille de TP1
Code ASCII et chirement de César
1 séance
Les TP se font en maple ou en sage et en monôme. A la n de la j-ème séance du i-ème TP vous devez
poster sur l'ENT votre chier maple ou sage dans le dossier TPi_seancej. Une fois la i-ème feuille de TP terminée, je veux aussi, dans un délai raisonnable, que vous déposiez votre TP terminé dans le dossier TPi_fini.
Allez sur la page web du cours et téléchargez le chier alice (enregistrer sous...) puis chargez le dans
maple (commande read) ou le chier alice.sage à l'aide de la commande load. Ce chier contient un texte,
placé dans une variable texte sous forme de chaîne de caractères (string).
Dans la suite, vous prendrez soin de tester vos procédures sur une petite partie du texte avant de les lancer
sur l'intégralité.
Quelques commandes utiles pour ce TP (en noir pour maple et en rouge pour sage)
length,len permet de connaître la taille d'une chaîne de caractère.
convert(a,list) convertit a (de type set, array, string ou autre) en liste.
cat permet de concaténer plusieurs chaînes de caractères.
Ord du paquetage StringTools, ord permet de transformer en ASCII. L'opération inverse est eectuée
grâce à la fonction Char, chr.
(1) L'ASCII est un code permettant de représenter les lettres, chires et autres symboles usuels sur un octet
(ou 7 bits pour les plus courants). Ce n'est pas le plus ecace en terme de théorie de l'information
mais c'est le plus utilisé pour transformer des textes en nombres. Acher la table ASCII dans son
intégralité (sous forme de liste par exemple).
(2) Écrire une procédure qui prend en entrée une chaine de caractères et renvoie une liste contenant les
codes ASCII des caractères. L'appliquer à texte.
(3) On suppose donc qu'on travaille sur un alphabet de 128 lettres. Écrire une fonction de chirement de
César d'un texte (donné sous forme de chaine de caractères).
(4) Écrire une fonction de déchirement et la tester sur texte.
(5) Construire une liste L où L[i] est une liste de longueur 2 comprenant le code ASCII i ainsi que la
fréquence d'apparition dans une chaine de caractères (ou le nombre d'apparition si vous préférez) du
caractère correspondant.
(6) Sachant que l'espace est le caractère le plus courant en anglais (comme probablement dans toutes les
langues d'ailleurs, pour faire bien il aurait fallu ne pas chirer les espaces), en déduire une fonction
d'attaque du chirement de César par analyse de fréquence. La tester sur des parties de texte.
(7) Si vous avez ni en avance, lisez le texte pour améliorer votre anglais.