Ressources pour le projet de chiffrement


  • Création d'une interface graphique

 

Voici le rendu d'une fenêtre qui affiche un texte:

Avant le chargement du fichier :                  Texte à chiffrer ( contenu du fichier chargé):

 

Voici le code qui permet d'obtenir cette interface:

# ajout dans projet des fonctions externes nécessaires

import tkinter as tk

from tkinter import filedialog, messagebox

import os

# Création de la fenêtre principale

fenetre = tk.Tk()

fenetre.title("Chiffreur de fichier texte")

# Création du bouton pour charger un fichier texte en appelant la fonction ouvrir_fichier 

btn_ouvrir = tk.Button(fenetre, text="Ouvrir un fichier texte", command=ouvrir_fichier)

#

btn_ouvrir.pack(pady=5)

# Création de la zone de texte pour afficher le texte à chiffrer

zone_texte = tk.Text(fenetre, height=20, width=80)

zone_texte.pack(padx=10, pady=5)

# Création du bouton qui lance le chiffrement en appelant la fonction chiffrer_et_enregistrer

btn_chiffrer = tk.Button(fenetre, text="Chiffrer et enregistrer", command=chiffrer_et_enregistrer)

btn_chiffrer.pack(pady=5)

# affichage fenêtre et gestion évènement

fenetre.mainloop()


Pour aller plus loin: voir le dimensionnement et le positionnement avec Tkinter: cliquer ici


Un pdf (moyen)  sur le dimensionnement et le positionnement avec Tkinter: cliquer ici

  • Création d'une fonction pour ouvrir un fichier dans une zone de texte


# les Variables globales (utilisées par toutes les fonctions pour se transférer des données)

# Variable globale fichier_1 associée au texte à chiffrer ( au début chaîne vide)

fichier1 = ""

# Variable globale fichier_2 associée au texte chiffré (au début chaîne vide)

fichier2 = ""

# Variable globale qui contient le chemin vers le fichier à charger (au début chaîne vide)

chemin_fichier_original = ""

# définition de la fonction

def ouvrir_fichier():

    # utilise les variables globales suivantes

    global fichier1, chemin_fichier_original

    # chemin du fichier sélectionné graphiquement

    chemin = filedialog.askopenfilename(filetypes=[("Fichiers texte", "*.txt")])

    # si le chemin a été défini

    if chemin:

        # essaie de charger le contenu du fichier

        try:

            with open(chemin, "r", encoding="utf-8") as f:

                # association du contenu du fichier à la variable fichier1

                fichier1 = f.read()

                # copie du chemin dans la variable globale

                chemin_fichier_original = chemin

                zone_texte.delete("1.0", tk.END)

                zone_texte.insert(tk.END, fichier1)

        # si echec chargement du fichier

        except Exception as e:

            messagebox.showerror("Erreur", f"Impossible d'ouvrir le fichier : {e}")


  • Création d'une fonction pour chiffrer

def chiffrer_et_enregistrer():

    # utilise les variables globales suivantes

    global fichier1, fichier2, chemin_fichier_original

    # si pas de fichier1 affichage d'un message d'erreur

    if not fichier1:

        messagebox.showwarning("Attention", "Aucun contenu à chiffrer.")

        return


    # Exemple de chiffrement fictif (à remplacer par votre chiffrement)

    fichier2 = "".join(chr((ord(c) + 3) % 256) for c in fichier1)

    # si pas de chemin pour enregister le fichier chiffré

    if not chemin_fichier_original:

        messagebox.showerror("Erreur", "Chemin du fichier d'origine introuvable.")

        return

    # emplacement de l'enregistrement

    dossier = os.path.dirname(chemin_fichier_original)

    # ajout du nom de fichier

    chemin_fichier2 = os.path.join(dossier, "fichier2.txt")

    # tentative de copier le contenu de la variable fichier2 dans fichier2.text

    try:

        with open(chemin_fichier2, "w", encoding="utf-8") as f:

            f.write(fichier2)

        messagebox.showinfo("Succès", f"Fichier chiffré enregistré :\n{chemin_fichier2}")

    # si erreur de copie

    except Exception as e:

        messagebox.showerror("Erreur", f"Impossible d'enregistrer le fichier : {e}")


Créé avec HelpNDoc Personal Edition: Produire facilement des livres électroniques Kindle