Skip to content
Snippets Groups Projects
Commit fe9549e1 authored by SCHIESS Mathieu's avatar SCHIESS Mathieu
Browse files

Correction coquille dans 0_cesar_MS.ipynb

parent cb1fb79d
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
<div style="padding:20px;background-color:papayawhip;" >
<h3 style="color:chocolate"> <i class="fa fa-info" aria-hidden="true"> </i> &nbsp; Remarque introductive &nbsp; <i class="fa fa-info" aria-hidden="true"></h3>
<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>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <a href="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" &nbsp; <i class="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
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 1 </h3>
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
def decacle_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
caractere_decale = chr((pos_car - decal - pos_a) % 26 + pos_a)
return caractere_decale
# compléter les ...
car = decacle_car(..., ...)
print("Si on décale le B de 3 on obtient", ...)
car = ...
print(..., ...)
```
%% Cell type:raw id: tags:
Quelle lettre obtient-on si on décale B de 3 caractère ?
Ma réponse :
Quelle lettre obtient-on si on décale X de 10 caractère ?
Ma réponse :
%% Cell type:markdown id: tags:breakpoint
#### Ctrl+enter pour continuer ...........
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 2</h3>
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
def dechiffre_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 = ''
for caractere in msg_chiffre: # pour chaque caractère du message
if caractere != ' ': # sauf les espaces
caractere_decale = decacle_car(caractere, cle)
msg_dechiffre = msg_dechiffre + caractere_decale
else:
msg_dechiffre = msg_dechiffre + caractere
return msg_dechiffre
# Utilisation de la fonction
message_chiffre = "un bxunru karuun bda brbvxwmr"
print("Message chiffré : ", message_chiffre)
decalage = 13
print("Valeur du décalage:", decalage)
message_dechiffre = dechiffre_cesar(message_chiffre, decalage)
print("Message déchiffré : ",message_dechiffre)
```
%% Cell type:raw id: tags:
Quelle est la clé utilisée ?
Ma réponse :
Quel est le message déchifrée ?
Ma réponse :
%% Cell type:markdown id: tags:breakpoint
#### Ctrl+enter pour continuer ...........
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 3</h3>
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é.
%% Cell type:code id: tags:
``` python
decalage = 0
message_chiffre = "et engx xlm iexbgx vxmmx gnbm"
print("Message chiffré : ", message_chiffre)
message_dechiffre = dechiffre_cesar(message_chiffre, decalage)
print("Valeur du décalage:", decalage)
print("Message déchiffré : ", msg_dechiffre)
```
%% Cell type:raw id: tags:
Quelle est la clé utilisée ?
Ma réponse :
Quel est le message déchifrée ?
Ma réponse :
%% Cell type:markdown id: tags:breakpoint
#### Ctrl+enter pour continuer ...........
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 </h3>
Réutilisez le même programme pour déchiffrer le message suivant par force brute :
```
"""qrznva, qrf y'nhor, n y'urher bh oynapuvg yn pnzcntar,
wr cnegvenv. ibvf-gh, wr fnvf dhr gh z'nggraqf.
w'venv cne yn sberg, w'venv cne yn zbagntar.
wr ar chvf qrzrhere ybva qr gbv cyhf ybatgrzcf.
wr znepurenv yrf lrhk svkrf fhe zrf crafrrf,
fnaf evra ibve nh qrubef, fnaf ragraqer nhpha oehvg,
frhy, vapbaah, yr qbf pbheor, yrf znvaf pebvfrrf,
gevfgr, rg yr wbhe cbhe zbv fren pbzzr yn ahvg.
wr ar ertneqrenv av y'be qh fbve dhv gbzor,
av yrf ibvyrf nh ybva qrfpraqnag iref unesyrhe,
rg dhnaq w'neevirenv, wr zrggenv fhe gn gbzor
ha obhdhrg qr ubhk ireg rg qr oehlrer ra syrhe."""
```
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment