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