From bbfbd8fdce8e5605b4e8b3ceda5435f0783d5be7 Mon Sep 17 00:00:00 2001 From: Pierre Valarcher Date: Thu, 10 Nov 2022 11:00:25 +0100 Subject: [PATCH 1/2] sujet --- python/5/TP.md | 25 ++++++++++++++++++++ python/5/c2byte.py | 13 +++++++++++ python/5/message.txt | 2 ++ python/Ctrl1/DivEnt.py | 14 ++++++++++++ python/Ctrl1/sujetMiniCtrl.md | 43 ++++++++++++++++++++++++----------- 5 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 python/5/TP.md create mode 100644 python/5/c2byte.py create mode 100644 python/5/message.txt create mode 100644 python/Ctrl1/DivEnt.py diff --git a/python/5/TP.md b/python/5/TP.md new file mode 100644 index 0000000..4a82355 --- /dev/null +++ b/python/5/TP.md @@ -0,0 +1,25 @@ +## Implementation du chiffrement de Vernam + +On souhaite construire un ensemble de fonctions qui permet de faire du chiffrement à la Vernam. + +Pour cela on a besoin des fonctions suivantes : + +- Générer une clé dans un fichier dont la longueur sera égale à la longueur du message. On génèrera cette clé dans un fichier ```vernam.txt```. Ce qui est généré c'est une suite d'entiers (compris entre 0 et 127; 7 bits) séparés par un espace. + +```python +def genereVernam (long, fic): +``` + +où ```long``` est la longueur du message et ```fic``` est le nom du fichier dans lequel la clé sera enregistrée. + + +- Ecrire une fonction (```encode```) qui prend un fichier (le message) en argument et qui génère un fichier (le coder) qui est la suite des caractères du message représentés sous forme d'entiers (compris entre 0 et 127) + +```python +def encode(fic_m, fic_enc) +``` + +- Ecrire une fonction ```chiffrage``` qui prend en arguments 2 fichiers (le message codé et la clé et qui produit le message chiffré : $f[i] + g[i] \mod 256$ + + + diff --git a/python/5/c2byte.py b/python/5/c2byte.py new file mode 100644 index 0000000..e6bdb44 --- /dev/null +++ b/python/5/c2byte.py @@ -0,0 +1,13 @@ + +r = '' + +x = ord('a') +while ((x/2) != 0): + if ((x % 2) == 0): + r = r+'0' + else: + r = r+'1' + x = x / 2 + +print(c2byte('a')) + diff --git a/python/5/message.txt b/python/5/message.txt new file mode 100644 index 0000000..3df932d --- /dev/null +++ b/python/5/message.txt @@ -0,0 +1,2 @@ +La pluie est bleue! +Q'en pensez vous? \ No newline at end of file diff --git a/python/Ctrl1/DivEnt.py b/python/Ctrl1/DivEnt.py new file mode 100644 index 0000000..33c4eba --- /dev/null +++ b/python/Ctrl1/DivEnt.py @@ -0,0 +1,14 @@ +num = int(input("Entrer un numérateur : ")) +denum = int(input("Entrer un dénominateur : ")) + +global num1 +global v + +num1 = num +v = 0 +if (num >= 0) and (denum > 0): + while (num1 - denum) >= 0: + num1 = num1 - denum + v = v+1 + r = num1 + print("La division", num, " par ", denum, " est égale à ", v, " et il reste ", r) diff --git a/python/Ctrl1/sujetMiniCtrl.md b/python/Ctrl1/sujetMiniCtrl.md index 38de0a9..bb1feff 100644 --- a/python/Ctrl1/sujetMiniCtrl.md +++ b/python/Ctrl1/sujetMiniCtrl.md @@ -1,13 +1,30 @@ -[!Note] Exercice (division entière) ->On cherche à calculer la division entière de 2 nombres entiers positifs par la méthode de la soustraction. ->1. Demander à l’utilisateur un numérateur ->2. Demander à l’utilisateur un denominateur ->3. Vérifier que les 2 valeurs sont positives (et non nulle pour le dénominateur) ->4. Écrire le boucle qui fait la division ->5. Afficher le résultat sous la forme suivante -> ->``` ->Entrer un numérateur : 1248 ->Entrer un dénominateur : 2 ->La division 1248 par 2 est égale à 624 et il reste 0 ->``` \ No newline at end of file +### Exercice (division entière) +On cherche à calculer la division entière de 2 nombres entiers positifs par la méthode de la soustraction. + +1. Demander à l’utilisateur un numérateur +2. Demander à l’utilisateur un denominateur + +3. Vérifier que les 2 valeurs sont positives (et non nulle pour le dénominateur) + +4. Écrire le boucle qui fait la division + +5. Afficher le résultat sous la forme suivante + + +```sh +Entrer un numérateur : 1248 +Entrer un dénominateur : 2 +La division 1248 par 2 est égale à 624 et il reste 0 +``` + +13 diviser par 4 + +13 - 4 = 9 (1 soustraction) + +9 - 4 = 5 (2 soustractions) + +5 - 4 = 1 (**3** soustractions) + +**1** - 4 < 0 STOP + +On a fait 3 soustractions et il reste 1 donc 13 = **3** * 4 + **1**. \ No newline at end of file From b92cb19bfcff5286f4aefac8464d39639262703e Mon Sep 17 00:00:00 2001 From: pvalarcher Date: Fri, 18 Nov 2022 09:17:43 +0100 Subject: [PATCH 2/2] csv --- python/5/cle.txt | 1 + python/5/codage.py | 54 ++++++++++++++++++++++++++++++++++++++++++++ python/5/code.txt | 1 + python/5/esr.py | 36 +++++++++++++++++++++++++++++ python/5/exoNote.py | 17 ++++++++++++++ python/5/message.txt | 5 ++-- 6 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 python/5/cle.txt create mode 100755 python/5/codage.py create mode 100644 python/5/code.txt create mode 100755 python/5/esr.py create mode 100755 python/5/exoNote.py diff --git a/python/5/cle.txt b/python/5/cle.txt new file mode 100644 index 0000000..1bfefa1 --- /dev/null +++ b/python/5/cle.txt @@ -0,0 +1 @@ +wo4Fo\F( u \ No newline at end of file diff --git a/python/5/codage.py b/python/5/codage.py new file mode 100755 index 0000000..4a67cef --- /dev/null +++ b/python/5/codage.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +import random + +file_message = open("message.txt", "r") +file_cle = open("cle.txt", "w") +file_code = open("code.txt", "w") + +## Supposons que message.txt contienne +## Il +## fait +## beau! + +lignes = file_message.readlines() + +for message in lignes: + + longM = len(message) + + cle = "" + + for i in range(longM): + j = random.randint(0,127) + l = chr(j) + cle = cle + l + + file_cle.write(cle) + + + messagecode = "" + + for i in range (longM): + ccode = chr( (ord(message[i]) + ord(cle[i])) % 127) + messagecode = messagecode + ccode + + file_code.write(messagecode) + + + + + + + + + + + + + + + +file_message.close() +file_cle.close() +file_code.close() + \ No newline at end of file diff --git a/python/5/code.txt b/python/5/code.txt new file mode 100644 index 0000000..3e8c36d --- /dev/null +++ b/python/5/code.txt @@ -0,0 +1 @@ +Jdy(Yf)jk8 \ No newline at end of file diff --git a/python/5/esr.py b/python/5/esr.py new file mode 100755 index 0000000..8cf09ef --- /dev/null +++ b/python/5/esr.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + + +# Polarité;Action;Fait;Valeur;Ordre +f = open("fr-esr-referentiel_de_transformation_numerique_esr.csv","r") + +lignes = f.readlines() + +chiffres = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] + +### Recherche de l'indice de la colonne 'Ordre' +entete = lignes[0].split(';') +print (entete) +# entete = ['Polarité', 'Action', 'Fait', 'Valeur', 'Ordre'] +indice = 0 +while (entete[indice] != 'Ordre') and (entete[indice] != 'Ordre\n'): + indice = indice + 1 +print("indice : ", indice) + +ordre_min_actuel = 1000000 +num_ligne = 0 +i = 0 +for ligne in lignes: + l = ligne.split(';') + # l[indice][0] c'est le premier caractère + # l[indice] == '89'== ['8', '9'] + if l[indice][0] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']: + + if int(l[indice]) < ordre_min_actuel: + + ordre_min_actuel = int(l[indice]) + num_ligne = i + i = i + 1 + + +print(lignes[num_ligne]) \ No newline at end of file diff --git a/python/5/exoNote.py b/python/5/exoNote.py new file mode 100755 index 0000000..9c35b50 --- /dev/null +++ b/python/5/exoNote.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +nomFic = input("Entrer un nom de fichier : ") + +f = open(nomFic, "r") + +lignes = f.readlines() + +c = 0 + +for ligne in lignes: + for i in range(len(ligne)): + if ligne[i] == 'a': + c = c + 1 + +f.close() +print("il y a ", c, " 'a' dans le ficher!") diff --git a/python/5/message.txt b/python/5/message.txt index 3df932d..524ee1e 100644 --- a/python/5/message.txt +++ b/python/5/message.txt @@ -1,2 +1,3 @@ -La pluie est bleue! -Q'en pensez vous? \ No newline at end of file +Il +fait +beau! \ No newline at end of file