"source": "<div style=\"padding:20px;background-color:papayawhip;\" > \n<h3 style=\"color:chocolate\"> <i class=\"fa fa-info\" aria-hidden=\"true\"> </i> Remarque introductive <i class=\"fa fa-info\" aria-hidden=\"true\"></h3> \n<p> Ce fichier est fait pour être lu sur le site <a href=\"https://notebook.basthon.fr/\"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style=\"border: 0; display:inline; margin: 0 5px; height:30px\" alt=\"Basthon\"/></a>. <br>\n \nSi vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>\nVeuillez cliquez sur <a href=\"https://notebook.basthon.fr/\">ce lien</a> et y charger ce fichier à l'aide du bouton \"Ouvrir\" <i class=\"fa fa-folder\" aria-hidden=\"true\"> </i>\n</p> </div> "
},
{
...
...
@@ -13,7 +13,7 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3> \n\nOn fournit une fonction `decale_car(car, decal)`qui renvoie le caractère `car` décalé (à gauche) dans l'alphabet d'un décalage `decal`. \n\nUtilisez la fonction `decale_car` (voir les exemples dans le commentaire de la fonction) pour répondre aux questions suivantes: \n\n1) Quelle lettre obtient-on si on décale B de 3 caractère ?\n2) Quelle lettre obtient-on si on décale X de 10 caractère ?\n"
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3> \n\nOn fournit une fonction `decale_car(car, decal)`qui renvoie le caractère `car` décalé (à gauche) dans l'alphabet d'un décalage `decal`. \n\nUtilisez la fonction `decale_car` (voir les exemples dans le commentaire de la fonction) pour répondre aux questions suivantes: \n\n1) Quelle lettre obtient-on si on décale B de 3 caractères ?\n2) Quelle lettre obtient-on si on décale X de 10 caractères ?\n"
},
{
"cell_type": "code",
...
...
@@ -27,7 +27,7 @@
{
"cell_type": "raw",
"metadata": {},
"source": "Quelle lettre obtient-on si on décale B de 3 caractère ?\n Ma réponse : \nQuelle lettre obtient-on si on décale X de 10 caractère ?\n Ma réponse : "
"source": "Quelle lettre obtient-on si on décale B de 3 caractères ?\n Ma réponse : \nQuelle lettre obtient-on si on décale X de 10 caractères ?\n Ma réponse : "
},
{
"cell_type": "markdown",
...
...
@@ -47,7 +47,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "def decale_car(car, decal):\n pos_a = ord(\"a\") # position du 'a' dans la table ASCII\n pos_car = ord(car.lower()) # position de car en minuscule dans la table ASCII\n caractere_decale = chr((pos_car - decal - pos_a) % 26 + pos_a)\n return caractere_decale\n\ndef dechiffre_cesar(msg_chiffre, cle):\n ''' \n Fonction qui permet de dechiffrer un message en utilisant le chiffre de cesar.\n \n Paramètres :\n msg_chiffre (str) : le message chiffre\n cle (int) : le décalage (la clé du chiffre)\n \n Valeur retournée (return) :\n msg_dechiffre (str) : le message dechiffré avec le décalage donné par le paramètre cle\n \n Exemples:\n >>> decale_car('cheuh', 3)\n 'zebre'\n '''\n \n msg_dechiffre = ''\n \n for caractere in msg_chiffre: # pour chaque caractère du message\n\n if caractere != ' ': # sauf les espaces\n caractere_decale = decale_car(caractere, cle) \n msg_dechiffre = msg_dechiffre + caractere_decale\n\n else:\n msg_dechiffre = msg_dechiffre + caractere\n \n return msg_dechiffre\n\n\n# Utilisation de la fonction\nmessage_chiffre = \"un bxunru karuun bda brbvxwmr\"\n\nprint(\"Message chiffré : \", message_chiffre)\n\ndecalage = 13 # VALEUR À CHANGER POUR TESTER\nprint(\"Valeur du décalage:\", decalage)\nmessage_dechiffre = dechiffre_cesar(message_chiffre, decalage)\nprint(\"Message déchiffré : \",message_dechiffre)\n"
...
...
@@ -55,7 +55,7 @@
{
"cell_type": "raw",
"metadata": {},
"source": "Quelle est la clé utilisée ?\n Ma réponse : \nQuel est le message déchifrée ?\n Ma réponse : "
"source": "Quelle est la clé utilisée ?\n Ma réponse : \nQuel est le message déchiffré ?\n Ma réponse : "
},
{
"cell_type": "markdown",
...
...
@@ -76,15 +76,15 @@
"execution_count": null,
"metadata": {
"scrolled": true,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "def decale_car(car, decal):\n pos_a = ord(\"a\") # position du 'a' dans la table ASCII\n pos_car = ord(car.lower()) # position de car en minuscule dans la table ASCII\n caractere_decale = chr((pos_car - decal - pos_a) % 26 + pos_a)\n return caractere_decale\n\ndef dechiffre_cesar(msg_chiffre, cle):\n msg_dechiffre = '' \n for caractere in msg_chiffre: # pour chaque caractère du message\n if caractere != ' ': # sauf les espaces\n caractere_decale = decale_car(caractere, cle) \n msg_dechiffre = msg_dechiffre + caractere_decale\n else:\n msg_dechiffre = msg_dechiffre + caractere\n return msg_dechiffre\n\n################ PROGRAMME PRINCIPAL ####################\ndecalage = 0\nmessage_chiffre = \"et engx xlm iexbgx vxmmx gnbm\"\n\nprint(\"Message chiffré : \", message_chiffre)\n\nmessage_dechiffre = dechiffre_cesar(message_chiffre, decalage)\nprint(\"Valeur du décalage:\", decalage)\nprint(\"Message déchiffré : \", message_dechiffre)"
"source": "def decale_car(car, decal):\n pos_a = ord(\"a\") # position du 'a' dans la table ASCII\n pos_car = ord(car.lower()) # position de car en minuscule dans la table ASCII\n caractere_decale = chr((pos_car - decal - pos_a) % 26 + pos_a)\n return caractere_decale\n\ndef dechiffre_cesar(msg_chiffre, cle):\n msg_dechiffre = '' \n for caractere in msg_chiffre: # pour chaque caractère du message\n if caractere.isalpha(): # sauf les espaces\n caractere_decale = decale_car(caractere, cle) \n msg_dechiffre = msg_dechiffre + caractere_decale\n else:\n msg_dechiffre = msg_dechiffre + caractere\n return msg_dechiffre\n\n################ PROGRAMME PRINCIPAL ####################\ndecalage = 0\nmessage_chiffre = \"et engx xlm iexbgx vxmmx gnbm\"\n\nprint(\"Message chiffré : \", message_chiffre)\n\nmessage_dechiffre = dechiffre_cesar(message_chiffre, decalage)\nprint(\"Valeur du décalage:\", decalage)\nprint(\"Message déchiffré : \", message_dechiffre)"
},
{
"cell_type": "raw",
"metadata": {},
"source": "Quelle est la clé utilisée ?\n Ma réponse : \nQuel est le message déchifrée ?\n Ma réponse : "
"source": "Quelle est la clé utilisée ?\n Ma réponse : \nQuel est le message déchiffré ?\n Ma réponse : "
<p> Ce fichier est fait pour être lu sur le site <ahref="https://notebook.basthon.fr/"><imgsrc='https://notebook.basthon.fr/assets/efede5218c9087496f16.png'style="border: 0; display:inline; margin: 0 5px; height:30px"alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <ahref="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" <iclass="fa fa-folder"aria-hidden="true"></i>
</p></div>
%% Cell type:markdown id: tags:
# Chiffrement symétrique - Le chiffrement de César
Dans ce chapitre, nous allons voir comment déchiffrer en python un message chiffré grâce au chiffrement de César.
On fournit une fonction `dechiffre_cesar(msg_chiffre, cle)` qui permet de dechiffrer un message en utilisant le chiffre de cesar.
Le programme suivant utilise `dechiffre_cesar(msg_chiffre, cle)`, mais comme la clé n'est pas connue on obtient pas le message dechiffré (ici un clé correspondant un décalage de 13 est utilisée).
Tester différents décalage jusqu'à trouver quelle est la clé et le message déchiffré.
%% Cell type:code id: tags:
``` python
defdecale_car(car,decal):
pos_a=ord("a")# position du 'a' dans la table ASCII
pos_car=ord(car.lower())# position de car en minuscule dans la table ASCII
Utilisez la fonction `dechiffre_cesar(msg_chiffre, cle)` de l'exercice précédant pour automatiser le déchiffrage du message `et engx xlm iexbgx vxmmx gnbm`.
Votre programme doit tester, automatiquement (faire une boucle), toutes les clés possibles et afficher à chaque fois ce que serait le message déchiffré avec cette clé afin de trouver la bonne clé, et *in fine*, le message déchiffré.
%% Cell type:code id: tags:
``` python
defdecale_car(car,decal):
pos_a=ord("a")# position du 'a' dans la table ASCII
pos_car=ord(car.lower())# position de car en minuscule dans la table ASCII