diff --git a/implementation.py b/implementation.py index 02af0d1..eda6c0a 100644 --- a/implementation.py +++ b/implementation.py @@ -12,7 +12,7 @@ def decomposeKey(pNum, pLength, pLevel): # fonction qui melange une liste pSIGMA melangee par une cle pKEY def shuffle(pSIGMA, pKEY): xReturn = [] - pList = list(pSIGMA) + pList = pSIGMA[:] l = len(pList) i = pKEY % l; # rang actuel n = 0; # nombre d'elements traites @@ -27,14 +27,22 @@ def shuffle(pSIGMA, pKEY): return xReturn; -# fonction qui fait tourner les rotors -def rotateRotors(rotor): - - - +# fonction qui fait tourner les rotors de pROTOR (indice 1 a len(pROTOR)) l'indice 0 etant la liste des premiers caracteres des rotors +def rotateRotors(pROTOR): + moveNext = True; + for r in range(1, len(pROTOR)): # parcourt les rotors + if( moveNext ): # si on doit deplacer le rotor + pROTOR[r] = [pROTOR[r][-1]] + pROTOR[r][:-1] # pivote le rotor de 1 caractere + moveNext = ( pROTOR[r][0] == pROTOR[0][r-1] ); # si le rotor vient de finir un tour, moveNext = True sinon moveNext = False +# fonction qui affiche les rotors +def printRotors(pROTOR): + for i in range(1, len(pROTOR)): + print pROTOR[i]; +# fonction qui code un caractere pChar via les rotors +def codeChar(pChar, pROTOR): SIGMA = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ']; @@ -51,4 +59,13 @@ ROTOR.append( [] ); for i in range(0, LEVEL): ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la lettre en premiere position dans la premiere entree du rotor - print ROTOR[i+1] # on l'affiche \ No newline at end of file + print ROTOR[i+1] # on l'affiche + +print +x = ''; +while( x == '' ): + x = raw_input(); + rotateRotors(ROTOR); + printRotors(ROTOR); + print +