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
[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|