Skip to content

NSI - Première - Représentation d'un texte en machine

Travail demandé

Partie 1: codages ASCII et ISO-latin1

Dans cette partie vous allez coder des messages pour les rendre incompréhensibles ou décoder des messages codés pour les rendre compréhensibles.

Information: En informatique on parle de message codé quand on utilise une table de codage pour représenter chaque caractère des mots d'un texte. La personne qui doit décoder le message a juste besoin de connaitre quelle table de codage a été utilisée. Ce n'est pas une méthode très robuste pour transmettre des informations sensibles.

On parle de message chiffré quand on utilise un algorithme de chiffrement pour rendre le message incompréhensible. L'algorithme de chiffrement utilise une clé de chiffrement pour chiffrer et une clé de déchiffrement pour déchiffrer ( ce peut être la même clé dans ce cas on parle de chiffrement symétrique ou bien deux clés différentes, dans ce cas on parle de chiffrement asymétrique). Vous verrez un exemple de chiffrement symétrique dans la partie 2. Le chiffrement asymétrique est plus robute, il est étudié en terminale.

Remarque: on entend parfois dire crypter un message au lieu de chiffrer un message , c'est incorrect et une franglaiserie (chiffrer se dit encrypt en Anglais)

Question 1.1

On vous donne un message de trois caractères: 4E 53 49, codé avec la table ASCII, ici les trois caractères sont représentés en hexadécimal; décoder le message en utilisant la table ASCII ( fig1) du dossier ressources

Question 1.2

En utilisant la table de codage ASCII ( fig1 du chapitre ressources), coder votre prénom en utilisant la représentation hexadécimale du code ASCII ( selon les caractères de votre prénom ce ne sera complètement possible, il vous faudra remplacer les caractères accentués par un caractère similaire sans accent: é devient e par exemple)

Question 1.3

Combien de bits faut-il pour représenter votre prénom en ASCII? De combien d'octets votre prénom est composé ?

Question 1.4

En utilisant maintenant la table de codage table ISO-latin1 aussi nommée ISO-8859-1 ( fig2 du chapitre ressources), coder votre prénom toujours en utilisant la représentation hexadécimale. Est-il maintenant possible de coder tous les caractères de votre prénom ? Combien de bits faut-il pour représenter votre prénom en ISO-latin1, comparer ce nombre avec celui obtenu en ASCII.

Partie 2: le code de César

On vous propose dans cette partie de chiffrer un message avec le code de César. Cette méthode de chiffrement symétrique, très simple, était utilisée par L'empereur Romain Jules César dans ses correspondances secrètes ce qui a donné le nom de « code de César ». Le texte chiffré s'obtient en remplaçant chaque lettre du texte original par une autre lettre , à distance fixe et toujours du même côté, de l'alphabet. Par exemple avec un décalage de 8 caractères vers la droite dans l'alphabet (voir la roue codeuse ci-dessous fig4) , A est remplacé par I, B devient J , et ainsi de suite jusqu'à Z qui devient H.

La longueur du décalage de 8 caractères vers la droite est la clé du chiffrement, il suffit de la transmettre au destinataire pour qu'il puisse déchiffrer.

La roue photographiée ci-dessous fig4, vous montre en jaune le "vrai" caractère d'un texte chiffré qui affiche les caractères de la zone orange ( la clé est ici 8, le A devient un I dans le message chiffré ):

On a utilisé une clé de 8 pour chiffrer un message et obtenu le texte suivant: ZWCKWCTM UI XWCTM

Question 2.1

Décoder le message chiffré en vous aidant de la roue ci-dessus.

Question 2.2

Chiffrer votre prénom avec une clé de 6. Pour ça, il vous faut créer une roue avec un décalage de 6 ce qui met le A ( de la roue jaune) en face du caractère de la roue rouge situé 6 caractères après le A. Cliquer-ici pour télécharger la roue à modifier puis Cliquer-ici pour regarder le tuto qui vous permettra de modifier l'image de la roue ( il faut que le logiciel Paint 3D soit installé sur Windows 11).

Joindre la version chiffrée de votre prénom dans votre compte rendu.

Les limites du code de César:

Il n'y a pas besoin d'être un expert en déchiffrement pour casser le code de César. Si on connaît la langue d'origine du texte chiffré on peut se baser sur les lettres les plus fréquentes de cette langue pour découvrir la clé.

En français, le caractère le plus fréquent est le "e", il suffit de se dire que le caractère le plus fréquent du texte chiffré est en réalité un "e" pour deviner la clé. Ci-dessous , le caractère le plus fréquent du message chiffré est "g" , on se dit que le "g" est en réalité un "e" ce qui correspond à un décalage de 2 caractères (une clé de 2 ) ce qui nous permet de déchiffrer le message:

Cependant ce n'est pas toujours aussi simple selon la nature du texte les lettres fréquentes peuvent être différentes. Si le texte chiffré est court cette méthode ne fonctionne pas bien, s'il est long elle donne de bons résultats.

On vous donne le message chiffré ci-dessous:

mbtbvdjttftfdifefmbsdijevdifttfftufmmftfdif

Question 2.3

  • a. quelle est la lettre la plus fréquente?
  • b. quelle est la clé de chiffrement si cette lettre la plus fréquente est en réalité un "e" ?
  • c. que devient la partie du message suivante mb tbvdjttf tfdif si vous la déchiffrez avec votre clé?

Partie 3: le code UTF-8

Vous utilisez probablement des émoticônes dans vos messages, sachez que ce sont des caractères UCS comme les autres et ils ont une version UTF-8.

Voici un extrait de la table des émoticônes, la colonne Code donne la valeur UCS du caractère.

Question 3.1

  • a. Donner le code UCS de l'émoticone grinning face.
  • b. à partir du point de code UCS en hexadécimal (1F600) du caractère grinning face, déterminer la valeur décimale du point de code.
  • c. Déduire avec la valeur décimale trouvée quel va être le nombre d'octets du caractère grinning face en UTF-8 et quel va être le format ( voir fig5 et fig6 du dossier ressources)
  • d à partir du point de code UCS en hexadécimal (1F600), déterminer la valeur binaire du point de code.
  • e En utisant le format obtenu à la question c et la valeur binaire du point de code obtenue à la question d, déduire la représentation binaire en UTF-8 de l'émoticone grinning face.