Module de cryptographie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 335 fois - Téléchargée 17 fois

Contenu du snippet

Ceci et un module qui facilite l'encodage & le decodage de type cesar & viginaire .
Installation:
c/c la source dans un fichier crypt.py
sous linux , placer le fichier dans : /usr/lib/pythonversion
Utilisation :
from crypt import encode,decode # on importe le module

#clé = clé de decalage ,de type int :p
#texte = texte a encoder ou ecoder , d"e type char :p

Usage :

from crypto import encode,decode

e = encode("cesar",1,"aA Bb Cc Yy Zz 09 ?!")
print e

e = decode("cesar",1,e)
print e

e = encode("viginaire",123,"aA Bb Cc Yy Zz 09 ?!")
print e

e = decode("viginaire",123,e)
print e

Source / Exemple :


#!/usr/bin/python
# -*- coding: iso8859-1 -*- 

''' 
	Module d'encodage & decodage
	Jule Cesar & Carrer de Viginaire
	Coded by Marnage 

Usage : 
	
from crypto import encode,decode

e = encode("cesar",1,"aA Bb Cc Yy Zz 09 ?!")
print e

e = decode("cesar",1,e)
print e

e = encode("viginaire",123,"aA Bb Cc Yy Zz 09 ?!")
print e

e = decode("viginaire",123,e)
print e

'''

from sys import stdout,exit

__all__ = "encode,decode"

class Variable:
	def __init__(self,txt,key):
		self.txt = txt
		self.key = key
		self.txt_crypt = ""
		self.txt_decrypt = ""
		if (type(key) != int ):
			try: self.key = int(key)
			except :
				 stdout.write("[!] Erreur : key != type int , conversion impossible\n")
				 exit(0)
		if (type(txt) != str ):
			try: self.key = str(key)
			except :
				 stdout.write("[!] Erreur : texte != type char , conversion impossible\n")
				 exit(0)
		

class Cesar(Variable):
	def __init__(self,txt,key):
		Variable.__init__(self,txt,key)

	
	def Encode(self):
		i = 0
		while ( i < len(self.txt) ):
			num = ord(self.txt[i])+self.key
			self.txt_crypt += chr(num)
			i += 1

	def Decode(self):
		i = 0
		while ( i < len(self.txt) ):
			num = ord(self.txt[i])-self.key
			self.txt_decrypt += chr(num)
			i += 1

class Viginaire(Variable):
	def __init__(self,txt,key):
		Variable.__init__(self,txt,key)
	
	def Encode(self):
		i = 0
		i_key = 0
		while ( i < len(self.txt) ):
			if ( i_key == len(str(self.key)) ):
				i_key = 0
			num = ord(self.txt[i])
			char_key = str(self.key)
			buffer_key = char_key[i_key]
			num += int(buffer_key)
			self.txt_crypt += chr(num)
			i += 1
			i_key += 1

	def Decode(self):
		i = 0
		i_key = 0
		while ( i < len(self.txt) ):
			if ( i_key == len(str(self.key)) ):
				i_key = 0
			num = ord(self.txt[i])
			char_key = str(self.key)
			buffer_key = char_key[i_key]
			num -= int(buffer_key)
			self.txt_decrypt += chr(num)
			i += 1
			i_key += 1

def encode(typ,key,txt):
	if ( typ == "cesar" ):
		Class = Cesar(txt,key)
		Class.Encode()
	elif ( typ == "viginaire" ):
		Class = Viginaire(txt,key)
		Class.Encode()
	else :
		return "[!] argument inconnu !"
	return Class.txt_crypt

def decode(typ,key,txt):
	if ( typ == "cesar" ):
		Class = Cesar(txt,key)
		Class.Decode()
	elif ( typ == "viginaire" ):
		Class = Viginaire(txt,key)
		Class.Decode()
	else :
		return "[!] argument inconnu" 
	return Class.txt_decrypt

Conclusion :


j'ai totalemenr changer le code ... :)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
20
Date d'inscription
vendredi 23 septembre 2005
Statut
Membre
Dernière intervention
10 juin 2010

Pas mal comme source, bien codée.
Tu n'as plus qu'à te lancer dans la programmation d'algorythmes de cryptage un peu plus complexe!
Mais c'est sympa.
Messages postés
6
Date d'inscription
lundi 1 octobre 2007
Statut
Membre
Dernière intervention
1 novembre 2017

J'ai fais comme tu a dis a la 1er version ( avec des condition ) mais je trouve cette version baucoup plus propre :) , pui le code et plus claire comme sa je trouve :)
Messages postés
5
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
8 juin 2019

C'est assez sympa :p

Mais pourquoi faire ( pour Cesar ) une fonction encode et décode alors que c'est le même code pratiquement
il te suffit de rajouter une condition et un paramètre dans ta fonction non ?
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Bon boulot, 8/10 bien mérité.
Ton code est assez bien construit avec les classes, même si il y avait moyen de faire beaucoup plus simple (de simples fonctions auraient fait le même boulot, mais c'est bien pour les gens qui début dans les classes) !!!
Bonne continuation
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2014
1
J'ai pas guetter le code source, mais pour isntalelr des modules python il existe le module distutils. Je mettrai peut etre un tuto si j'ai le temps ^^
Afficher les 7 commentaires

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.