Skip to content
Extraits de code Groupes Projets
Valider 025cfd35 rédigé par Sylvain Melot's avatar Sylvain Melot
Parcourir les fichiers

Update 2 files

- /docs/14_Securisation/scripts/affine_3.py
- /docs/14_Securisation/02_Chiffrements_symetriques_1.md
parent 1f226a38
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #86121 en échec
...@@ -154,9 +154,14 @@ La fonction `chr(n)` prend un code Unicode caractère sous forme d'un entier en ...@@ -154,9 +154,14 @@ La fonction `chr(n)` prend un code Unicode caractère sous forme d'un entier en
!!! question "Compléter le script ci-dessous:" !!! question "Compléter le script ci-dessous:"
{{IDE('scripts/affine_2')}} {{IDE('scripts/affine_2')}}
!!! question "Compléter le script ci-dessous:"
Vous réutiliserez la fonction `dico_chiffrement`
{{IDE('scripts/affine_3')}}
!!! danger "BILAN" !!! danger "BILAN"
......
# --- PYODIDE:env --- # # --- PYODIDE:env --- #
def dico_chiffrement(cle):
"""Fonction qui détermine le dictionnaire de chiffrement linéaire
Précondition: cle est la clé à utiliser (int)
Postcondition : dictionnaire de chiffrement linéaire (dict)"""
alphabet = {chr(i+65): i for i in range(26)}
alphabet_chiffre = {chr(i+65): chr((alphabet[chr(i+65)]*cle)%26+65) for i in range(26)}
return alphabet_chiffre
def dico_cesar(decalage): print(dico_chiffrement(3))
return {chr(i+65): chr((i+decalage)%26+65) for i in range(26)}
# --- PYODIDE:code --- # # --- PYODIDE:code --- #
def dechiffre_cesar(texte, decalage): def chiffrement(texte, cle):
"""Fonction qui réalise le déchiffrement de César avec une clé quelconque. """Fonction qui détermine texte chiffre avec la clé
Précondition: Précondition:
- texte est le texte à chiffrer sous forme de chaine de caractères (str) - texte est le texte à chiffrer (str)
- decalage est la clé utilisée pour le chiffrage (int) - cle est la clé à utiliser (int)
Postcondition : texte chiffré sous forme de chaine de caractères (str)""" Postcondition : texte chiffré avec le chiffrement linéaire (str)"""
alphabet = {chr(i+65): i for i in range(26)}
dico = dico_cesar(...) alphabet_chiffre = ...
texte_dechiffre = ... texte_chiffre = ""
for car in ... : for lettre in ...:
if car in ...: if lettre in ...:
texte_dechiffre = ... texte_chiffre = ...
else : else :
texte_dechiffre = ... texte_chiffre = ...
return ... return ...
# --- PYODIDE:corr --- # # --- PYODIDE:corr --- #
def dechiffre_cesar(texte, decalage): def chiffrement(texte, cle):
"""Fonction qui réalise le déchiffrement de César avec une clé quelconque. """Fonction qui détermine texte chiffre avec la clé
Précondition: Précondition:
- texte est le texte à chiffrer sous forme de chaine de caractères (str) - texte est le texte à chiffrer (str)
- decalage est la clé utilisée pour le chiffrage (int) - cle est la clé à utiliser (int)
Postcondition : texte chiffré sous forme de chaine de caractères (str)""" Postcondition : texte chiffré avec le chiffrement linéaire (str)"""
alphabet = {chr(i+65): i for i in range(26)}
dico = dico_cesar(- decalage) alphabet_chiffre = dico_chiffrement(cle)
texte_dechiffre = "" texte_chiffre = ""
for car in texte : for lettre in texte :
if car in dico: if lettre in alphabet_chiffre.keys():
texte_dechiffre = texte_dechiffre + dico[car] texte_chiffre = texte_chiffre + alphabet_chiffre[lettre]
else : else :
texte_dechiffre = texte_dechiffre + car texte_chiffre = texte_chiffre + lettre
return texte_dechiffre return texte_chiffre
# --- PYODIDE:tests --- # # --- PYODIDE:tests --- #
assert dechiffre_cesar('XKNURG NC JBCNARG', 9) == 'OBELIX ET ASTERIX'
assert dechiffre_cesar('VQZ XZNVM', 21) == 'AVE CESAR'
# --- PYODIDE:secrets --- # # --- PYODIDE:secrets --- #
assert dechiffre_cesar('BORYVK RG NFGREVK', 13) == 'OBELIX ET ASTERIX'
assert dechiffre_cesar('DYH FHVDU', 3)== 'AVE CESAR'
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter