Python et cryptage / décryptage à la mode César¶
Le chiffrement est en fait une simple substitution monoalphabétique, c’est-à-dire qu’une lettre est remplacée par une seule autre.
Le code de césar a la particularité qu’il est basé sur un simple décalage de l’alphabet et, ainsi, si on note A = 1, B = 2, ..., Z = 26, que l’on ajoute une constante et que l’on conserve le résultat modulo 26. On obtient le texte codé.
On appelle la constante, la clé ou le décalage. Certains appellent la clé la lettre correspondant au A du texte clair. Par exemple, le décalage par défaut est de 3, la lettre A devient D, que l’on nomme la clé.
programme pour encrypter le texte
Messageacrypter="le script pour décoder ne devrait pas être long a faire, je Le donnerai sur ce même forum"
cle=24 # Décalage par rapport à Y (code ASCII : 24 + 1 = 25e lettre de l'alphabet)
acrypter=Messageacrypter.upper()
lg=len(acrypter)
MessageCrypte=""
for i in range(lg):
if acrypter[i]==' ':
MessageCrypte+=' '
else:
asc=ord(acrypter[i])+cle
MessageCrypte+=chr(asc+26*((asc<65)-(asc>90)))
print MessageCrypte
programme pour décrypter un texte crypter
MessageCrypte="JC QAPGNR NMSP BCAMBCP LC BCTPYGR NYQ CRPC JMLE Y DYGPC HC JC BMLLCPYG QSP AC KCKC DMPSK"
lg=len(MessageCrypte)
MessageClair=""
cle=24 # Décalage par rapport à Y (code ASCII : 24 + 1 = 25e lettre de l'alphabet)
for i in range(lg):
if MessageCrypte[i]==' ':
MessageClair+=' '
else:
asc=ord(MessageCrypte[i])-cle
MessageClair+=chr(asc+26*((asc<65)-(asc>90)))
print MessageClair
Warning
il faut noter qu’ici le texte crypter ou decrypter en uppercase ... donc oublié les accents ou un cryptage complexe
Il est possible en python de créer très rapidement password ou mot de passe
import string
from random import sample
pop = string.ascii_letters + string.digits
k=8
passwd = ''.join(sample(pop, k))
print passwd