Accueil > > > CRYPTAGE AVEC LE CHIFFRE DE CÉSAR
CRYPTAGE AVEC LE CHIFFRE DE CÉSAR
Information sur la source
Description
Cryptage et decryptage basé sur le chiffre de césar ( voir http://fr.wikipedia.org/wiki/Chiffre_de_C%C3%A9sar )
Source
- #!/usr/bin/python
- # -*- coding:Utf-8 -*-
- from string import upper
-
- class Crypto:
- """Cryptage utilisant le chiffre de césar
- ch = chaine, d = décalage"""
- def __init__(self, ch, d):
- self.ch, self.d = ch, d
- #On initialise les dictionnaires. Correspondance pour crypter, decorrespondance pour décoder
- self.correspondance = {}
- self.decorrespondance = {}
-
- #On construit les listes. alpha = alphabet normal. ald = alphabet avec le décalage
- self.alpha = [chr(x) for x in xrange(97, 123)]
- self.ald = [self.alpha[(i+self.d)%26] for i in xrange(26)] #Utilisation du modulo pour éviter le OutOfRange
- #Construction de correspondance
- for x in xrange(26):
- self.correspondance[self.alpha[x]] = self.ald[x]
-
- def inverser_dico(self):
- """Construction du dictionnaire decorrespondance en inversant clé/valeur de correspondance afin d'accéder à la traduction"""
- for (k, v) in self.correspondance.items():
- self.decorrespondance[v] = k
- return self.decorrespondance
-
- def code(self, p):
- """Coder et décoder le texte"""
- self.new_ch = []
- self.inverser_dico()
- for car in self.ch:
- if car is ' ':
- self.new_ch.append(' ')
- else:
- if p is True:
- self.new_ch.append(self.correspondance[car])
- else:
- self.new_ch.append(self.decorrespondance[car])
-
- return self.new_ch
-
- if __name__ == "__main__":
- while 1:
- chx = raw_input("Voulez (C)rypter ou (D)écrypter votre texte : ")
- if chx.upper() == 'C':
- x = True
- elif chx.upper() == 'D':
- x = None
- else:
- print "Mauvais choix !"
- break
-
- decalage = raw_input("De combien de lettres voulez vous décaler votre code : ")
- if decalage.isdigit():
- txt = raw_input("Veuillez entrer votre texte :\n")
- a = Crypto(txt.lower(), int(decalage))
- else:
- print "Vous devez entrer un nombre !"
- break
-
- try:
- a.code(x)
- print ''.join(a.code(x))
- except:
- print "Vous ne devez rentrer que des lettres !"
- break
-
- r = raw_input("Autre texte à coder ( 1: Oui, Entrée: Non ) : ")
- if r == '1':
- continue
- else:
- break
#!/usr/bin/python
# -*- coding:Utf-8 -*-
from string import upper
class Crypto:
"""Cryptage utilisant le chiffre de césar
ch = chaine, d = décalage"""
def __init__(self, ch, d):
self.ch, self.d = ch, d
#On initialise les dictionnaires. Correspondance pour crypter, decorrespondance pour décoder
self.correspondance = {}
self.decorrespondance = {}
#On construit les listes. alpha = alphabet normal. ald = alphabet avec le décalage
self.alpha = [chr(x) for x in xrange(97, 123)]
self.ald = [self.alpha[(i+self.d)%26] for i in xrange(26)] #Utilisation du modulo pour éviter le OutOfRange
#Construction de correspondance
for x in xrange(26):
self.correspondance[self.alpha[x]] = self.ald[x]
def inverser_dico(self):
"""Construction du dictionnaire decorrespondance en inversant clé/valeur de correspondance afin d'accéder à la traduction"""
for (k, v) in self.correspondance.items():
self.decorrespondance[v] = k
return self.decorrespondance
def code(self, p):
"""Coder et décoder le texte"""
self.new_ch = []
self.inverser_dico()
for car in self.ch:
if car is ' ':
self.new_ch.append(' ')
else:
if p is True:
self.new_ch.append(self.correspondance[car])
else:
self.new_ch.append(self.decorrespondance[car])
return self.new_ch
if __name__ == "__main__":
while 1:
chx = raw_input("Voulez (C)rypter ou (D)écrypter votre texte : ")
if chx.upper() == 'C':
x = True
elif chx.upper() == 'D':
x = None
else:
print "Mauvais choix !"
break
decalage = raw_input("De combien de lettres voulez vous décaler votre code : ")
if decalage.isdigit():
txt = raw_input("Veuillez entrer votre texte :\n")
a = Crypto(txt.lower(), int(decalage))
else:
print "Vous devez entrer un nombre !"
break
try:
a.code(x)
print ''.join(a.code(x))
except:
print "Vous ne devez rentrer que des lettres !"
break
r = raw_input("Autre texte à coder ( 1: Oui, Entrée: Non ) : ")
if r == '1':
continue
else:
break
Conclusion
Voilà, c'est ma toute première source et un de mes tout premiers vrais programmes ( même si je fais quelques autres petits trucs autour, c'est le seul utile )
J'ai vu qu'il existait d'autre source portant sur le même thème, mais ce n'est pas la même méthode je crois. Donc voilà, j'attend vos commentaires
Historique
- 07 novembre 2007 20:51:10 :
- Léger problème de commentaire ^^
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Librairie graphique vectoriel [ par DoudouBidou ]
Bonjour, j'ai depuis quelques jour un projet en tête, celui de réaliser un logiciel de saisi de schéma électrique en python.
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
calcul matriciel simple [ par gwenc_hlan ]
bonjour, comment peut on faire sous Python du calcul matriciel simple ? (additionner, multiplier ou inverser des matrices). faut - il impérativeme
opération simple ...et pourtant compliquée...et pourtant simple...et p.... [ par dojh ]
Bonjour à tousEn pleine initiation Python, mais aussi en prise de tête, mais c'est bien, ça fait travailler le cerveau...L'idée, c'est qu'avec l'impor
Problème de calcul simple [ par vaggarath ]
Bonjour bonjour. Voilà j'ai un problème tout c*n, j'en suis sur... En fait je fais un boutton qui procède à un calcul suivant les valeurs rentrées au
paralléliser une simple fonction [ par Viny12 ]
Bonjour, Je suis novice en python et j'aimerais savoir comment paralléliser une simple fonction qui calcule une jacobienne de sorte que le calcul pui
[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.
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PYVISA PROBLèMEPYVISA PROBLèME par sandrine44
Cliquez pour lire la suite par sandrine44
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|