Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Chiffre de vigenère

5/5 (3 avis)

Vue 6 756 fois - Téléchargée 234 fois

Description

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 / Exemple :


#! /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"

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.