begin process at 2012 02 05 01:23:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & cryptage

 > CHIFFRE DE VIGENÈRE

CHIFFRE DE VIGENÈRE


 Description

Cliquez pour voir la capture en taille normale
Voilà, c'est ma première source... Soyez donc un peu indulgents SVP :)
Ce programme, avec une interface graphique TKinter, permet de chiffrer et de déchiffrer un texte grâce au chiffre de Vigénère. Remarque : ceci est le VRAI algorithme, ce n'est pas celui qui insère des caractères spéciaux incompréhensibles... (cf. recherche "Vigenere") Algorithme : "Ars cryptographica" sur Google.

Ch'uis débutant, n'hésitez pas à faire des remarques :)

Source

  • #! /usr/bin/python
  • # -*- coding: cp1252 -*-
  • from Tkinter import *
  • import re
  • import string
  • def crypt():
  • i=0
  • str_crypted=''
  • txt3.delete(1.0,END)
  • str_tocrypt= txt1.get(1.0,END)
  • str_tocrypt=string.upper(str_tocrypt)
  • str_tocrypt=re.sub('[^A-Z]','',str_tocrypt)
  • txt1.delete(1.0,END)
  • txt1.insert(INSERT,str_tocrypt)
  • cle=txt2.get( 1.0,END)
  • cle=string.upper(cle)
  • cle=re.sub('[^A-Z]','',cle)
  • txt2.delete(1.0,END)
  • txt2.insert(INSERT,cle)
  • while i<=len(str_tocrypt)-1:
  • if i<=len(cle)-1:
  • let_interm = cle[i]
  • decalage=ord(let_interm)-65
  • if ord(str_tocrypt[i])+decalage>90:
  • let_new=chr(ord(str_tocrypt[i])+decalage-26)
  • else:
  • let_new=chr(ord(str_tocrypt[i])+decalage)
  • str_crypted+=let_new
  • else:
  • let_interm=cle[i-(i/len(cle))*len(cle)]
  • decalage=ord(let_interm)-65
  • if ord(str_tocrypt[i])+decalage>90:
  • let_new=chr(ord(str_tocrypt[i])+decalage-26)
  • else:
  • let_new=chr(ord(str_tocrypt[i])+decalage)
  • str_crypted+=let_new
  • i=i+1
  • txt3.insert (INSERT,str_crypted)
  • def uncrypt():
  • i=0
  • str_crypted=''
  • txt1.delete(1.0,END)
  • str_tocrypt=txt3.get(1.0,END)
  • str_tocrypt=string.upper(str_tocrypt)
  • str_tocrypt= re.sub('[^A-Z]','',str_tocrypt)
  • txt3.delete(1.0,END)
  • txt3.insert(INSERT,str_tocrypt)
  • cle=txt2.get(1.0,END)
  • cle=string.upper(cle)
  • cle=re.sub('[^A-Z]','',cle)
  • txt2.delete(1.0,END)
  • txt2.insert(INSERT,cle)
  • while i<=len(str_tocrypt)-1:
  • if i<=len(cle)-1:
  • let_interm = cle[i]
  • decalage=ord(let_interm)-65
  • if ord(str_tocrypt[i])-decalage<65:
  • let_new=chr(ord(str_tocrypt[i])-decalage+26)
  • else:
  • let_new=chr(ord(str_tocrypt[i])-decalage)
  • str_crypted+=let_new
  • else:
  • let_interm=cle[i-(i/len(cle))*len(cle)]
  • decalage=ord(let_interm)-65
  • if ord(str_tocrypt[i])-decalage<65:
  • let_new=chr(ord(str_tocrypt[i])-decalage+26)
  • else:
  • let_new=chr(ord(str_tocrypt[i])-decalage)
  • str_crypted+=let_new
  • i=i+1
  • txt1.insert(INSERT,str_crypted)
  • fen=Tk()
  • fen.title('Cryptage/Décryptage VIGENERE By ElPutoamo')
  • Label(fen,text='Texte à CRYPTER/DECRYPTER',fg='red').grid(row=0)
  • txt1=Text(fen,height=10,width=70)
  • txt1.grid(row=1)
  • Label(fen,text='Clé de cryptage',fg='red').grid(row=2)
  • bou1=Button(fen,text='Décrypter',command=uncrypt)
  • bou1.grid(row=2,sticky=E)
  • txt2=Text(fen,height=3,width=70)
  • txt2.grid(row=3)
  • bou2=Button(fen,text='Crypter',command=crypt)
  • bou2.grid(row=4,sticky=W)
  • Label(fen,text='Texte CRYPTE/A DECRYPTER',fg='red').grid(row=4)
  • txt3=Text(fen,height=10,width=70)
  • txt3.grid(row=5)
  • fen.mainloop()
#! /usr/bin/python

# -*- coding: cp1252 -*-



from Tkinter import *

import re

import string



def crypt():

    i=0

    str_crypted=''

    txt3.delete(1.0,END)

    

    str_tocrypt= txt1.get(1.0,END)

    str_tocrypt=string.upper(str_tocrypt)

    str_tocrypt=re.sub('[^A-Z]','',str_tocrypt)

    txt1.delete(1.0,END)

    txt1.insert(INSERT,str_tocrypt)



    cle=txt2.get( 1.0,END)

    cle=string.upper(cle)

    cle=re.sub('[^A-Z]','',cle)

    txt2.delete(1.0,END)

    txt2.insert(INSERT,cle)



    while i<=len(str_tocrypt)-1:

        if i<=len(cle)-1:

            let_interm = cle[i]

            decalage=ord(let_interm)-65

            if ord(str_tocrypt[i])+decalage>90:

                let_new=chr(ord(str_tocrypt[i])+decalage-26)

            else:

                let_new=chr(ord(str_tocrypt[i])+decalage)

            str_crypted+=let_new

        else:

            let_interm=cle[i-(i/len(cle))*len(cle)]

            decalage=ord(let_interm)-65

            if ord(str_tocrypt[i])+decalage>90:

                let_new=chr(ord(str_tocrypt[i])+decalage-26)

            else:

                let_new=chr(ord(str_tocrypt[i])+decalage)

            str_crypted+=let_new

        i=i+1



    txt3.insert (INSERT,str_crypted)



def uncrypt():

    i=0

    str_crypted=''

    txt1.delete(1.0,END)

    

    str_tocrypt=txt3.get(1.0,END)

    str_tocrypt=string.upper(str_tocrypt)

    str_tocrypt= re.sub('[^A-Z]','',str_tocrypt)

    txt3.delete(1.0,END)

    txt3.insert(INSERT,str_tocrypt)



    cle=txt2.get(1.0,END)

    cle=string.upper(cle)

    cle=re.sub('[^A-Z]','',cle)

    txt2.delete(1.0,END)

    txt2.insert(INSERT,cle)



    while i<=len(str_tocrypt)-1:

        if i<=len(cle)-1:

            let_interm = cle[i]

            decalage=ord(let_interm)-65

            if ord(str_tocrypt[i])-decalage<65:

                let_new=chr(ord(str_tocrypt[i])-decalage+26)

            else:

                let_new=chr(ord(str_tocrypt[i])-decalage)

            str_crypted+=let_new

        else:

            let_interm=cle[i-(i/len(cle))*len(cle)]

            decalage=ord(let_interm)-65

            if ord(str_tocrypt[i])-decalage<65:

                let_new=chr(ord(str_tocrypt[i])-decalage+26)

            else:

                let_new=chr(ord(str_tocrypt[i])-decalage)

            str_crypted+=let_new

        i=i+1



    txt1.insert(INSERT,str_crypted)



fen=Tk()

fen.title('Cryptage/Décryptage VIGENERE By ElPutoamo')



Label(fen,text='Texte à CRYPTER/DECRYPTER',fg='red').grid(row=0)



txt1=Text(fen,height=10,width=70)

txt1.grid(row=1)



Label(fen,text='Clé de cryptage',fg='red').grid(row=2)



bou1=Button(fen,text='Décrypter',command=uncrypt)

bou1.grid(row=2,sticky=E)



txt2=Text(fen,height=3,width=70)

txt2.grid(row=3)



bou2=Button(fen,text='Crypter',command=crypt)

bou2.grid(row=4,sticky=W)



Label(fen,text='Texte CRYPTE/A DECRYPTER',fg='red').grid(row=4)



txt3=Text(fen,height=10,width=70)

txt3.grid(row=5)



fen.mainloop()


 Conclusion

1)Entrer le texte à crypter/décrypter.
2)Entrer la clé de cryptage.
3)Cliquer sur "Crypter/Décrypter"

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec une capture GÉNÉRATEUR DE MOT DE PASSE PYTHON (CLI) par svmars
Source avec Zip Source avec une capture GÉNÉRATEUR DE MOT DE PASSE PYTHON / WXPYTHON par svmars
CRYPTE ET DECRYPTE UN FICHIER (AVEC HASH POUR VÉRIFICATION) par saigneurdushi
Source avec Zip CRYPTEUR CARRE DE POLYBE par Dipx
Source avec une capture HORAIRESRESTREINTS par lonewolfs

 Sources en rapport avec celle ci

Source avec Zip PALINDROMES, ANACYCLIQUES ET ANAGRAMMES par lespinx
Source avec Zip CRYPTEUR CARRE DE POLYBE par Dipx
Source avec une capture CRYPTAGE AVEC LE CHIFFRE DE CÉSAR par ara3n
Source avec Zip Source avec une capture CHIFFRE DE VIGENÈRE par VladislavIV
Source avec Zip CRYPTAGE DE MOTS/PHRASES. par bouceka

Commentaires et avis

Commentaire de Papy Octet le 09/07/2007 08:43:16

Salut ben...,

Pour un début, pas mal.

Mais quelques petites remarques :
1. La plus importante : tu devrais documenter ton code (placer des explications sur ce qu'il fait), cela te permettra de mieux t'y retrouver quand tu tenteras de modifier ton code. Et en plus, cela permettra à d'autres utilisateurs de mieux comprendre son fonctionnement. Et puis, ça aide pour la recherche de défaut d'exécution du code.
2. Pourquoi tant de lignes vides entre tes lignes de code ? Place une ligne vide entre deux boucles, deux définitions de fonctions, etc. OK, mais point trop n'en faut.

Bonne continuation. Je suis certain que tu trouveras du plaisir à programmer.
A+

Commentaire de taz_iup le 20/07/2007 09:42:34

Evite d'utiliser des variables globales. fait des fonctions qui utilise des parametres a la place

par exemple

def crypt( txt ):
   result = ""
   ...
   return result

ainsi tu pourras plus facilement reutiliser tes fonctions.
dans ton cas il faut obligatoirement que tu est des objets tkinter s'appelant txt3,etc

Cela te permet également de séparer le "core" de ton interface. Le code est également plus lisble et on se demande pas on on va chercher ses variables tout droit sorties de nulle part.

Ensuite simplifies toi la vie :
pas besoin de faire string.upper(str_tocrypt) fais simplement str_tocrypt.upper() ( si str_tocrypt est un objet string python bien sûr )

Les fonctions relative au clic et autres événements de l'interface sont souvent appelé onQuelquechose, par exemple onBou2Clic pour le clic sur ton objet bou2

Tu peux aussi préfixer tes objets selon leur types et leur donner des noms significatifs:
par exemple buCryptage a la place de bou2 pour le bouton qui va declencher le cyptage. On sait que c'est un bouton avec le prefixe bu et le nom indique qu'il va crypter ^^

Des prefixes standards existent pour les types simples comme les entiers les chaines, etc.. mais je  ne connais pas de standard pour les objets graphiques :p

Ensuite juste avis personnel, a l'occasion essai wxpython, c'est un peu plus complexe que tkinter mais tellement plus beau et plus complet ^^

Voila

Commentaire de benitoelputoamo le 05/08/2007 12:33:36

Merci pour vos commentaires, très constructifs.

@Papy Octet 1. J'ajouterai des commentaires dès que possible.
2. Les lignes blanches se sont ajoutées toutes seules, j'ai juste copié-collé :S

@Taz_Iup : Je vais essayer de modifier mon code et le reposterai dès que possible. Quant à wxPython, je suis en train de me documenter.

Merci pour vos commentaires.
B.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Cryptage DES [Python] [ par Kadaj676 ] Bonjour j'aimerais savoir si vous aviez de la documentation sur des algo's de cryptage. Principalement DES, et je voudrais vosu demander, si il est po Cryptage xor [ par sorcier0011 ] Bonjour,J'aimerais bien faire un petit crypteur de texte xor mais je n'arrive pas a trouver comment convertir des lettres en Ascii. Parce que apart fa Pour ne pas planter [ par franckysnow91 ] Bonjour à tous,Je programme un algorithme sous python et malheureusement, je fais souvent des boucles perverses et je ne réussi pas à m'en sortir. Je Algorithme Python parité [HELP] [ par Lyd3n ] Bonjour, j'ai besoin d'aide pour un programme que je dois rendre a un professeur qui m'a poser des contraintes : je ne dois utiliser que "[i]input[/i [Programme Python] Cryptage RSA (cherche codeur) [ par GelH ] Bonjour, Je recherche un codeur Python capable de réaliser un programme de cryptage/décryptage d'une chaine de caractère utilisant l'algorithme RSA. Morpion 3D [ par lola413 ] Bonjour, Dans le cadre de mon cours de programmation j'ai pour exercice (a rendre pour le 23, youpi!) de réaliser un morpion 4*4 en 3D (alignement de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales