{"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é dans l'alphabet d'un décalage `decal`. \n\nTestez-là pour décaler :\n1) la lettre B de 3 caractères\n2) la lettre X de 10 caractères\n\n"},{"metadata":{"trusted":false},"cell_type":"code","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\n# Votre code ci-dessous\nprint( decale_car(\"...\", ...) )\n...\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 2</h3> \n\nToujours avec la fonction `decale_car(car, decal)` à disposition, on va maintenant essayer de déchiffrer un message entier.\n\nLe code suivant permet de décaler chaque lettre pour déchiffrer un message entier, malheureusement vous ne connaissez pas la clé. 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\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"decalage = 0\n\n\nmsgChiffre = \"un bxunru karuun bda brbvxwmr\"\n\nprint(\"Message chiffré : \", msgChiffre)\n\nmsgDechiffre = ''\n\nfor caractere in msgChiffre: # pour chaque caractère du message\n\n if caractere != ' ': # sauf les espaces\n caractere_decale = decale_car(caractere, decalage) \n msgDechiffre = msgDechiffre + caractere_decale\n \n else:\n msgDechiffre = msgDechiffre + caractere\n\nprint(\"Valeur du décalage:\", decalage)\nprint(\"Message déchiffré : \", msgDechiffre)\n\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\nAvec le même code mais un nouveau message, on va maintenant tester toutes les clés possibles automatiquement pour trouver quelle est la clé et le message déchiffré.\n\nModifiez pour cela le code ci-dessous afin qu'il teste tous les décalages possibles automatiquement et affiche tous les résultats."},{"metadata":{"trusted":false,"scrolled":true},"cell_type":"code","source":"msgChiffre = \"et engx xlm iexbgx vxmmx gnbm\"\n\nprint(\"Message chiffré : \", msgChiffre)\n\ndecalage = 0\n\nmsgDechiffre = ''\n\nfor caractere in msgChiffre: # pour chaque caractère du message\n\n if caractere.isalpha(): # sauf les espaces\n caractere_decale = decale_car(caractere, decalage) \n msgDechiffre = msgDechiffre + caractere_decale\n\n else:\n msgDechiffre = msgDechiffre + caractere\n\nprint(\"Valeur du décalage:\", decalage, \"Message déchiffré : \", msgDechiffre)\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 4 </h3> \n\nRéutilisez le même code 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":false},"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é dans l'alphabet d'un décalage `decal`. \n\nTestez-là pour décaler :\n1) la lettre B de 3 caractères\n2) la lettre X de 10 caractères\n\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"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\n# Votre code ci-dessous\nprint( decale_car(\"...\", ...) )\n...\n"
},
{
"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\nToujours avec la fonction `decale_car(car, decal)` à disposition, on va maintenant essayer de déchiffrer un message entier.\n\nLe code suivant permet de décaler chaque lettre pour déchiffrer un message entier, malheureusement vous ne connaissez pas la clé. 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\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": false
},
"outputs": [],
"source": "decalage = 0\n\n\nmsgChiffre = \"un bxunru karuun bda brbvxwmr\"\n\nprint(\"Message chiffré : \", msgChiffre)\n\nmsgDechiffre = ''\n\nfor caractere in msgChiffre: # pour chaque caractère du message\n\n if caractere != ' ': # sauf les espaces\n caractere_decale = decale_car(caractere, decalage) \n msgDechiffre = msgDechiffre + caractere_decale\n \n else:\n msgDechiffre = msgDechiffre + caractere\n\nprint(\"Valeur du décalage:\", decalage)\nprint(\"Message déchiffré : \", msgDechiffre)\n\n"
},
{
"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\nAvec le même code mais un nouveau message, on va maintenant tester toutes les clés possibles automatiquement pour trouver quelle est la clé et le message déchiffré.\n\nModifiez pour cela le code ci-dessous afin qu'il teste tous les décalages possibles automatiquement et affiche tous les résultats."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true,
"trusted": false
},
"outputs": [],
"source": "msgChiffre = \"et engx xlm iexbgx vxmmx gnbm\"\n\nprint(\"Message chiffré : \", msgChiffre)\n\ndecalage = 0\n\nmsgDechiffre = ''\n\nfor caractere in msgChiffre: # pour chaque caractère du message\n\n if caractere.isalpha(): # sauf les espaces\n caractere_decale = decale_car(caractere, decalage) \n msgDechiffre = msgDechiffre + caractere_decale\n\n else:\n msgDechiffre = msgDechiffre + caractere\n\nprint(\"Valeur du décalage:\", decalage, \"Message déchiffré : \", msgDechiffre)\n"
},
{
"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 4 </h3> \n\nRéutilisez le même code 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```"