Crypteur carre de polybe

Description

Voila le programme que j'ai codé il y'a peu,

C'est le tout premier code que je propose ici, donc toute remarque est la bienvenue

Il y'a surement quelques lignes qui pourraient être réduites.

Le niveau est, je pense débutant car je commence seulement a programmer depuis peu.

Ce code permets à l'utilisateur de:

- Crypter une phrase à l'aide de la méthode du carré de Polybe ( Carré de Polybe sans le caractère "W" )
- Décrypter une phrase cryptée par le carré de Polybe
- Mini explication sur le carré de Polybe

Il reste encore quelques petites parties à blinder et a modifier, j'en suis conscient

Source / Exemple :


# Programme codé par Dipx pour Pythonfrance
# V1.0

def preparationcryptage(PHRASE):
    "Fonction qui permet de blinder la phrase que l'utilisateur veux crypter"
    LISTE1=["âà","éèêë","îï","ô","ûü","ç"]
    LISTE2=["A","E","I","O","U","C"]
    i=0
    # Remplacement des caractères accentués éventuels
    for mot in LISTE1:
       REPLACE=LISTE2[i]
       for lettre in mot:
           PHRASE=PHRASE.replace(lettre,REPLACE)
       i+=1      
    for lettre in "',-;:!?.":  # Suppression de la ponctuation
        PHRASE=PHRASE.replace(lettre,"")
    PHRASE=PHRASE.upper()    # Passage en majuscules
    return PHRASE

############################################           Menu        ########################################################

print ("Bienvenue dans le programme de cryptage (Méthode de cryptage: Carré de polybe)")
print ("Carré de polybe utilisé: Carré de 5*5, lettre retirée: 'W'\n")

MENU=True
while MENU==True:

    print ("                               Que voulez vous faire ?")
    print ("\nPour crypter une phrase, veuillez taper 1")
    print ("Pour décrypter une phrase, veuillez taper 2")
    print ("Pour avoir des explications sur le cryptage du carré de Polyde, tapez 3")
    choix_util=input("Pour quitter le programme, veuillez taper exit\n=> ")
 

############################################         Cryptage          ###################################################

    if choix_util=='1':
        LISTE_H,LISTE_V=[],[]
        for j in range (4):
            for i in range(5):               
                LISTE_H.append(chr(65+5*j+i))
            LISTE_V.append(LISTE_H)
            LISTE_H=[]
        LISTE_H=[]
        LISTE_H.append(chr(85))
        LISTE_H.append(chr(86))
        LISTE_H.append(chr(88))
        LISTE_H.append(chr(89))
        LISTE_H.append(chr(90))
        LISTE_V.append(LISTE_H)

        A_CRYPTER=input("Entrez le texte à crypter :\n=> ")
        A_CRYPTER=preparationcryptage(A_CRYPTER)
        A_CRYPTER=A_CRYPTER.replace(" ","")

        print ("Votre texte crypté est:")
        for i in range(len(A_CRYPTER)):
            POS=ord(A_CRYPTER[i])-65
            VERTI=str(int((POS/5)+1))
            HORI=str((POS%5)+1)
            FIN=VERTI+HORI
            print (FIN,end=' ')

        print ("\nSi vous voulez revenir au menu de sélection, tapez sur la touche enter")
        CHOIX_MENU=input("Si vous voulez quitter le programme, tapez exit/n =>")
        if CHOIX_MENU=="exit":
            MENU=False

####################################         Decryptage          #############################################################

    elif choix_util=='2':
        LISTE_H,LISTE_V=[],[]
        for j in range (4):
            for i in range(5):               
                LISTE_H.append(chr(65+5*j+i))
            LISTE_V.append(LISTE_H)
            LISTE_H=[]
        LISTE_H=[]
        LISTE_H.append(chr(85))
        LISTE_H.append(chr(86))
        LISTE_H.append(chr(88))
        LISTE_H.append(chr(89))
        LISTE_H.append(chr(90))
        LISTE_V.append(LISTE_H)
           

        A_DECRYPT=input("Entrez le message à décrypter :\n=> ")
        A_DECRYPT=A_DECRYPT.replace(" ","")
        LONG=len(A_DECRYPT)

        print ("\nMessage décrypté :")

        for h in range(0,LONG,2):  #           
            POS=int(A_DECRYPT[h])-1
            POS2=int(A_DECRYPT[h+1])-1
            CARAC=LISTE_V[POS][POS2]
            print (CARAC,end='')

        print ("\nSi vous voulez revenir au menu de sélection, tapez sur la touche enter")
        CHOIX_MENU=input("Si vous voulez quitter le programme, tapez exit\n=> ")
        if CHOIX_MENU=="exit":
            MENU=False

#############################      Explications sur le carré de Polyde       ##################################################

    elif choix_util=='3':
        LISTE_H,LISTE_V=[],[]
        for j in range (4):
            for i in range(5):               
                LISTE_H.append(chr(65+5*j+i))
            LISTE_V.append(LISTE_H)
            LISTE_H=[]
        LISTE_H=[]
        LISTE_H.append(chr(85))
        LISTE_H.append(chr(86))
        LISTE_H.append(chr(88))
        LISTE_H.append(chr(89))
        LISTE_H.append(chr(90))
        LISTE_V.append(LISTE_H)

        print ("Voici un schéma du carré de Polybe :\n" )
        for j in range (5):
            for i in range(5):
                print (LISTE_V[j][i],end='')
            print ()
        print ("\nChaque lettre à une coordonnée qui lui est propre,")
        print ("La coordonnée se lit comme ceci: (Numéro de la ligne, Numéro de la colonne),")
        print ("Ainsi la coordonée de A est (1,1) et se crypte: 11")
        print ("Pour en savoir plus : <http://www.apprendre-en-ligne.net/crypto/subst/polybe.html>")
        print ("\nSi vous voulez revenir au menu de sélection, tapez sur la touche enter")
        CHOIX_MENU=input("Si vous voulez quitter le programme, tapez exit\n=> ")
        if CHOIX_MENU=="exit":
            MENU=False

############################## Blindage menu + commande exit ##############################################

    elif choix_util=='exit':
        MENU=False
    else :
        print ("\nVeuillez entrer une commande valide")
        print ("Retour au menu\n")

print ("Merci d'avoir utilisé le programme de cryptage/décryptage du carré de Polyde !")

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.