def generer_ordre(cle): ordre_insertion = cle alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' for lettre in alphabet: if lettre not in ordre_insertion: ordre_insertion = ordre_insertion + lettre return ordre_insertion print(generer_ordre('AXU7')) def grille_vide(n): return [['' for _ in range(n)] for _ in range(n)] def generer_grille(cle): ordre_insertion = generer_ordre(cle) grille = grille_vide(6) indice = 0 for i in range(6): for j in range(6): grille[i][j] = ordre_insertion[indice] indice = indice + 1 return grille print(generer_grille('SECURITY1024')) def dechiffrer(cle, message): resultat = '' grille = generer_grille(cle) for t in message: resultat = resultat + grille[t[0]-1][t[1]-1] return resultat assert dechiffrer('2048ALGORITHMES',[(4,4),(3,3),(2,4)]) == 'NSI' def generer_dico(cle): dico = {} grille = generer_grille(cle) for i in range(6): for j in range(6): dico[grille[i][j]] = (i+1, j+1) return dico def chiffrer(cle, message): resultat = [] dico = generer_dico(cle) for t in message: resultat.append(dico[t]) return resultat