{"cells":[{"metadata":{},"cell_type":"markdown","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> "},{"metadata":{},"cell_type":"markdown","source":"# Chiffrement symétrique - Le chiffrement de César\n\nDans ce chapitre, nous allons voir comment déchiffrer en python un message chiffré grâce au chiffrement de César\n"},{"metadata":{},"cell_type":"markdown","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 commantaire de la fonction) pour répondre aux questions suivantes: Testez-là pour décaler (répondre ci-dessous) :\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"},{"metadata":{"trusted":true},"cell_type":"code","source":"def decacle_car(car, decal):\n ''' \n Fonction qui permet d'obtenir le caractère qui se trouve à unp \n position décalée dans l'alphabet\n \n Paramètres :\n car (str) : le caractère qu'on veut décaler\n decal (int) : le décalage\n \n Valeur retournée (return) :\n car_decal (str) : le caractère décalé\n \n Exemples:\n >>> decacle_car('e', 2)\n 'c'\n >>> decacle_car('n', 1)\n 'm'\n '''\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\n# compléter les ...\ncar = decacle_car(..., ...)\nprint(\"Si on décale le B de 3 on obtient\", ...)\ncar = ...\nprint(..., ...)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"raw","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 : "},{"metadata":{"tags":["breakpoint"]},"cell_type":"markdown","source":"#### Ctrl+enter pour continuer ..........."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2</h3> \n\nOn fournit une fonction `dechiffre_cesar(msg_chiffre, cle)` qui permet de dechiffrer un message en utilisant le chiffre de cesar. \n\nLe 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). Changez la valeur du décalage à la main pour tester toutes les clés possibles et trouver quelle est la clé et le message déchiffré.\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"def dechiffre_cesar(msg_chiffre, cle):\n ''' \n Fonction qui permet de dechiffrer un message en utilisant le \n 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 \n donné par le parmètre clé\n \n Exemples:\n >>> decacle_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 = decacle_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\nprint(\"Valeur du décalage:\", decalage)\nmessage_dechiffre = dechiffre_cesar(message_chiffre, decalage)\nprint(\"Message déchiffré : \",message_dechiffre)\n","execution_count":null,"outputs":[]},{"metadata":{"tags":["breakpoint"]},"cell_type":"markdown","source":"#### Ctrl+enter pour continuer ..........."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3</h3> \n\nUtilisez 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`.\n\nVotre programme doit tester, automatiquement, 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é."},{"metadata":{"scrolled":true,"trusted":true},"cell_type":"code","source":"decalage = 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é : \", msg_dechiffre)","execution_count":null,"outputs":[]},{"metadata":{"tags":["breakpoint"]},"cell_type":"markdown","source":"#### Ctrl+enter pour continuer ..........."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3> \n\nRéutilisez le même programme pour déchiffrer le message suivant par force brute : \n```\n\"\"\"qrznva, qrf y'nhor, n y'urher bh oynapuvg yn pnzcntar,\nwr cnegvenv. ibvf-gh, wr fnvf dhr gh z'nggraqf.\nw'venv cne yn sberg, w'venv cne yn zbagntar.\nwr ar chvf qrzrhere ybva qr gbv cyhf ybatgrzcf.\n\nwr znepurenv yrf lrhk svkrf fhe zrf crafrrf,\nfnaf evra ibve nh qrubef, fnaf ragraqer nhpha oehvg,\nfrhy, vapbaah, yr qbf pbheor, yrf znvaf pebvfrrf,\ngevfgr, rg yr wbhe cbhe zbv fren pbzzr yn ahvg.\n\nwr ar ertneqrenv av y'be qh fbve dhv gbzor,\nav yrf ibvyrf nh ybva qrfpraqnag iref unesyrhe,\nrg dhnaq w'neevirenv, wr zrggenv fhe gn gbzor\nha obhdhrg qr ubhk ireg rg qr oehlrer ra syrhe.\"\"\"\n```"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}
\ No newline at end of file
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"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> "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "# Chiffrement symétrique - Le chiffrement de César\n\nDans ce chapitre, nous allons voir comment déchiffrer en python un message chiffré grâce au chiffrement de César\n"
},
{
"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 commantaire 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"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": false
},
"outputs": [],
"source": "def decacle_car(car, decal):\n ''' \n Fonction qui permet d'obtenir le caractère qui se trouve à unp \n position décalée dans l'alphabet\n \n Paramètres :\n car (str) : le caractère qu'on veut décaler\n decal (int) : le décalage\n \n Valeur retournée (return) :\n car_decal (str) : le caractère décalé\n \n Exemples:\n >>> decacle_car('e', 2)\n 'c'\n >>> decacle_car('n', 1)\n 'm'\n '''\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\n# compléter les ...\ncar = decacle_car(..., ...)\nprint(\"Si on décale le B de 3 on obtient\", ...)\ncar = ...\nprint(..., ...)\n"
},
{
"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 : "
},
{
"cell_type": "markdown",
"metadata": {
"tags": [
"breakpoint"
]
},
"source": "#### Ctrl+enter pour continuer ..........."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2</h3> \n\nOn fournit une fonction `dechiffre_cesar(msg_chiffre, cle)` qui permet de dechiffrer un message en utilisant le chiffre de cesar. \n\nLe 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é.\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": false
},
"outputs": [],
"source": "def dechiffre_cesar(msg_chiffre, cle):\n ''' \n Fonction qui permet de dechiffrer un message en utilisant le \n 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 \n donné par le parmètre clé\n \n Exemples:\n >>> decacle_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 = decacle_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\nprint(\"Valeur du décalage:\", decalage)\nmessage_dechiffre = dechiffre_cesar(message_chiffre, decalage)\nprint(\"Message déchiffré : \",message_dechiffre)\n"
},
{
"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 : "
},
{
"cell_type": "markdown",
"metadata": {
"tags": [
"breakpoint"
]
},
"source": "#### Ctrl+enter pour continuer ..........."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3</h3> \n\nUtilisez 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`.\n\nVotre 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é."
<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 `decale_car(car, decal)`qui renvoie le caractère `car` décalé (à gauche) dans l'alphabet d'un décalage `decal`.
Utilisez la fonction `decale_car` (voir les exemples dans le commantaire de la fonction) pour répondre aux questions suivantes: Testez-là pour décaler (répondre ci-dessous) :
Utilisez la fonction `decale_car` (voir les exemples dans le commantaire de la fonction) pour répondre aux questions suivantes:
1) Quelle lettre obtient-on si on décale B de 3 caractère ?
2) Quelle lettre obtient-on si on décale X de 10 caractère ?
%% Cell type:code id: tags:
``` python
defdecacle_car(car,decal):
'''
Fonction qui permet d'obtenir le caractère qui se trouve à unp
position décalée dans l'alphabet
Paramètres :
car (str) : le caractère qu'on veut décaler
decal (int) : le décalage
Valeur retournée (return) :
car_decal (str) : le caractère décalé
Exemples:
>>>decacle_car('e',2)
'c'
>>>decacle_car('n',1)
'm'
'''
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
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). Changez la valeur du décalage à la main pour tester toutes les clés possibles et trouver quelle est la clé et le message déchiffré.
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
defdechiffre_cesar(msg_chiffre,cle):
'''
Fonction qui permet de dechiffrer un message en utilisant le
chiffre de cesar
Paramètres :
msg_chiffre (str) : le message chiffre
cle (int) : le décalage (la clé du chiffre)
Valeur retournée (return) :
msg_dechiffre (str) : le message dechiffré avec le décalage
donné par le parmètre clé
Exemples:
>>>decacle_car('cheuh',3)
'zebre'
'''
msg_dechiffre=''
forcaractereinmsg_chiffre:# pour chaque caractère du message
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, 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é.
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é.