☀️
420-1G2-HU Logique de programmation
  • 👋Bienvenue dans le cours de logique de programmation!
  • Bases de la logique de programmation
    • Concepts de la programmation
    • Les opérateurs
      • Exercices
    • Les commentaires
  • Les données
    • Les données et types simples
    • Les variables, les constantes et les opérations de base
    • Les opérations d'écriture et de lecture
    • Les opérations sur les chaînes de caractères
    • Laboratoire 1 - données
    • Laboratoire 2 - données
  • Les collections de données
    • Les listes
    • Les opérations sur les listes
    • Laboratoire listes - solution
    • Les dictionnaires
      • Exercices
  • Différents types de traitements
    • Structures logiques séquentielle
    • Structures logiques conditionnelles (if/else/elif)
    • Structures logiques répétitives (boucles)
      • Exercices de base
      • Laboratoire boucles - solution
  • Modularisation
    • Création et appels des fonctions
    • La documentation des fonctions
    • Annotation de types dans les fonctions
    • Laboratoire - fonctions (niveau débutant)
    • Révision express fonctions
    • Les modules
      • Laboratoire
  • La portée des variables
  • Débogage
    • 🫂Le débogueur, c'est ton ami!
      • Introductions aux outils de débogage
      • Techniques de débogage
    • Les erreurs et exceptions
      • Introduction aux notions d’erreurs
      • Les exceptions et leurs gestion
      • Exercices de base - avec solutions
      • Laboratoire débogage et gestion des erreurs -solution
  • Tests unitaires
    • Tests unitaires
    • Exercice
  • Cryptographie
    • Introduction à la cryptographie
  • Les fichiers
    • Accès aux fichiers
  • Résolution de problèmes
    • Résolution de problèmes : exercice introductif
    • Étapes d'analyse et de résolution de problèmes
  • Activités avec Légos
    • Introduction à la programmation
    • Consolidation sur les fonctions avec des blocs
    • Pratiquer les boucles avec des blocs
  • Laboratoires
    • Simulation combat - dragon vs chevalier
    • Simulateur de bataille - Les anneaux du pouvoir
    • Jeu de cartes
    • Lien logique mathématique
      • Algèbre de Boole
    • Crypto variée
    • Après Noël
  • git - système de gestion de versions
    • Introduction à Git
    • Étapes de création des dépôts Git
  • Classes inversées
    • Résolution de problèmes, fonctions et traitements conditionnels
  • Examens
    • Examen 2 - 2023
    • Examen 3 - 2023
    • Examen 2 - 2024
  • Révision
    • Fonctions, gestion d'erreurs et tests unitaires
    • Résolution de problème
  • Trucs utiles
    • Check-list
Powered by GitBook
On this page
  • But
  • Code fourni
  • Énoncé
  • Tâches
  • Questions
  • Tests unitaires
  1. Laboratoires

Crypto variée

Auteur : Bruno Charbonneau

PreviousAlgèbre de BooleNextAprès Noël

Last updated 6 months ago

But

  • Manipuler les algorithmes de hachage avec le module hashlib.

  • Manipuler les chaînes de caractères.

  • Manipuler les dictionnaires.

  • Manipuler du code déjà fourni.

Code fourni

Énoncé

Dans ce laboratoire, vous devrez utiliser vos connaissances en cryptographie afin de découvrir les mots qui se cachent derrière des chaînes de caractères qui ont été chiffrées de différentes façons.

Dans le code déjà fourni vous trouverez une liste de mots mots_aleatoires en texte clair. Chacune des chaînes chiffrées correspondent à un de ces mots.

Vous trouverez également les listes mots_cesar, mots_hash, mots_cesar_hash. Ces 3 listes contiennent les mots que vous devrez déchiffrer.

  • mots_cesar : Cette liste contient les mots chiffrés avec le chiffrement de César.

  • mots_hash : Cette liste contient des mots qui ont été hachés avec un des algorithmes suivants: md5, sha256, sha512

  • mots_cesar_hash : Cette liste contient des mots qui ont tout d'abord été chiffrés à l'aide du chiffrement de César, puis hachés avec l'un des 3 algorithmes cités précédemment.

Tâches

À l'aide du code fourni et de la librairie hashlib, vous devrez retrouver les mots qui ont été chiffrés. La fonction hasher_mots vous permettra de créer un dictionnaire des hash md5, sha256 et sha512 de chacun des mots fourni en texte clair. Ce dictionnaire pourra ensuite vous aider à décoder les mots qui ont été hachés.

La fonction chiffrement_cesar permet de prendre un mot et de retourner ce mot chiffré avec un certain nombre de rotations selon l'algorithme de César (voir les notes de cours sur la cryptographie).

Questions

  • Vous devez compléter ces deux fonctions permettant de faire le chiffrement.

  • Vous devez également créer des fonctions vous permettant de décoder les mots des 3 listes chiffrées.

Tests unitaires

Vous devez également créer les tests unitaires pour toutes les fonctions créées dans ce programme. Ces tests pourront vous permettre de vous assurer que les différentes méthodes que vous créez pour chiffrer et déchiffrer fonctionnent bien.

Créez un plan de test afin de bien vous assurer de tester différentes possibilités. N'oubliez pas d'inclure des cas qui devraient causer des erreurs afin de vous assurer que votre programme gère bien ces cas également.

3KB
cryptographie.zip
archive