Le problème pour le cryptage est presque terminé, pour faire tourner plusieurs fois la fonction, il manquais deux affectations : L doit être remis à zéro pour relire la phrase et la variable de sortie vidé pour ne pas rajouté des valeurs.
Voila le code :
alphabet = '0abcdefghijklmnopqrstuvwxyz 'Ce n'est qu'une beta, le principe est celui de la machine enigma une lettre en entré une en sortie, il peut encore être raccourci et il manque les espaces, les nombres et autres caractères spéciaux. Il reste des bugs dans les listes.
crypt = ('0','11','14','22','16','10','3','19','14','9','13','10','12','6','-7','-12','-11','-7','-14','-13','-6','-13','-20','-10','-7','-24','-15')
crypt1 = ('0','25','20','12','14','11','13','7','13','-3','7','15','-11','10','6','-10','-14','7','-9','-6','-16','-10','-14','-13','-12','-22','-19')
passe = (raw_input('votre texte :').lower())
L = 0
phc = ''
phd = ''
i = 0
def cryptage():
global L, phc, passe
while L < len(passe) :
Nlettre = alphabet.index(passe[L])
#print Nlettre
#print crypt[Nlettre]
Nlettre = str((float(Nlettre)) + float(crypt[Nlettre]))
point = Nlettre.index('.')
Nlettre = Nlettre[0:point]
phc = phc + alphabet[(int(Nlettre))]
L = L + 1
def decryptage():
global L, phd, passe
while L < len(passe) :
Nlettre1 = alphabet.index(passe[L])
#print Nlettre1
#print crypt1[int(Nlettre1)]
Nlettre1 = str((float(Nlettre1)) + float(crypt1[Nlettre1]))
point1 = Nlettre1.index('.')
Nlettre1 = Nlettre1[0:point1]
phd = phd + alphabet[(int(Nlettre1))]
L = L + 1
Choix = raw_input('vous voulez crypter ou decrypter un message ?(c ou d) : ')
nbtour = input('votre cle de chiffrage dechiffrage :')
if Choix == 'c':
for i in range (0,nbtour):
print passe
cryptage ()
passe = phc
L = 0
phc = ''
print 'La phrase crypte est : ' + passe
if Choix == 'd':
for i in range (0,nbtour):
decryptage ()
passe = phd
L = 0
phd = ''
print 'La phrase crypte est : ' + passe