Piratage

Il nous est possible de chiffrer et déchiffrer un message en ayant connaissance de la clef, mais commment faire cela sans cette clef. Pour cela il va nous falloir de préférence une connaissance du langage utilisé dans la communication. Supposons que nous espionnons des francophones. Dans ce cas, un coup d'oeil au premier livre venu et nous pourrons observer que la lettre "e" est la plus fréquente en français. Ainsi, si nous sommes en possession d'un message chiffré par la méthode de César, il suffira souvent d'identifier la lettre la plus fréquente de ce message, et de décaler toutes les lettres afin que cette lettre soit transformée en "e".

Pour le faire de manière informatique, on pourra le faire en deux étapes: d'abord nous calculerons le nombre d'occurrence de chaque lettre dans le message, puis nous identifierons laquelle de ces lettres est la plus fréquente.

Exercice 3

  • Sur papier, écrire une fonction compteOccurrence(caractere, s) qui prend comme arguments un caractère minuscule sans accent et une chaîne de caractères, et qui retourne combien de fois le caractère est présent dans cette chaîne. Ensuite seulement, tester votre fonction sur ordinateur. Exemple d'application: compteOccurrence('c','compteOccurrence') => 4.
  • De même, définir et tester la fonction histogrammeLettres(ma_chaine) qui retourne une liste de 26 nombres correspondant au nombre de fois que chaque lettre de l'alphabet apparaît dans ma_chaine. Exemple: histogrammeLettres('aaabbc') => [3,2,1,0,0,...,0]

Exercice 4

Ecrire sur papier une fonction idMaxVal(l) qui prend pour argument une liste de nombres entiers et qui retourne l'index pour lequel l'élément de la liste a la valeur maximale. Tester votre définition de fonction sur ordinateur.

Exercice 4

A l'aide de la stratégie définie ci-dessus et les fonctions déjà fonctionnelles, trouvez avec quelle clef le message suivant a été chiffré et dechiffrez le: mfljrmvqivljjzruvtyzwwivicvdvjjrxvszvemvelurejcvdfeuvuvcrtipgkfxirgyzvwvcztzkrkzfe