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
ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas [TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION[TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION par cyril
Lorsque l'on créé un Work Item dans TFS, il est possible de le classer dans un "area" et dans une "iteration". Dans la plupart des types de projet, un "area" correspond à une catégorie, une "iteration" à un numéro de version. Il est possible de cré...
Cliquez pour lire la suite de l'article par cyril
Forum
RE : PYTHON 3.0RE : PYTHON 3.0 par aera group
Cliquez pour lire la suite par aera group RE : PYTHON 3.0RE : PYTHON 3.0 par xeolin
Cliquez pour lire la suite par xeolin RE : PYTHON 3.0RE : PYTHON 3.0 par aera group
Cliquez pour lire la suite par aera group
Logiciels
uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur 4Videosoft Transfert iPad Mac (3.2.08)4VIDEOSOFT TRANSFERT IPAD MAC (3.2.08)4Videosoft Transfert iPad-Mac est un logiciel managérial iPad professionnel qui a des fonctions i... Cliquez pour télécharger 4Videosoft Transfert iPad Mac
|