Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MODULE DE CRYPTOGRAPHIE


Information sur la source

Catégorie :Sécurité & cryptage Classé sous : cesar, viginaire, encode, cryptographie, marnage Niveau : Débutant Date de création : 03/10/2007 Date de mise à jour : 15/10/2007 03:57:27 Vu : 4 338

Note :
7,33 / 10 - par 3 personnes
7,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

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

  • #!/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
#!/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 ... :)
 

Historique

15 octobre 2007 03:57:27 :
refai en plus beau :)

Commentaires et avis

signaler à un administrateur
Commentaire de xeolin le 08/10/2007 23:45:12 7/10

Bravo,


Bien mais peut etre optimiser,

il est preferable de creer deux fonction afin d'eviter la comparaison "if (typ == "viginaire"):" a chaque boucle.

Puis les commentaire, puis la source (internet si possible) ou tu as trouver cet algorithme d'encription, un site par exemple ou tu peux trouver qui l'a fait, comment ca marche, son resonnement.

Et dit toi que 7/10 pour un code completement ilisible et sans commentaire c'est beaucoup.

signaler à un administrateur
Commentaire de Marnage le 09/10/2007 23:31:30

Mon code manque de commentaire je suis d'accord :)
Pour crée une fonction pour le viginaire & cesar je l'avais fait au début , mais bon pour les 3 lgnes qui change celon le type je me suis dit que faire sa serais plus simple :p .
pour les raisonement : google > cryptographie jule cesar ou carré de viginaire .

signaler à un administrateur
Commentaire de taz_iup le 12/10/2007 12:50:53

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 ^^

signaler à un administrateur
Commentaire de aera group le 31/10/2007 14:25:13 8/10

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

signaler à un administrateur
Commentaire de ara3n le 07/11/2007 14:52:06

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 ?

signaler à un administrateur
Commentaire de Marnage le 09/11/2007 02:30:05

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 :)

signaler à un administrateur
Commentaire de CHAR As Human le 15/12/2007 18:55:16 7/10

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.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.