rotation finie [stable~80]
This commit is contained in:
parent
fceb588c84
commit
07129d1444
|
@ -12,7 +12,7 @@ def decomposeKey(pNum, pLength, pLevel):
|
||||||
# fonction qui melange une liste pSIGMA melangee par une cle pKEY
|
# fonction qui melange une liste pSIGMA melangee par une cle pKEY
|
||||||
def shuffle(pSIGMA, pKEY):
|
def shuffle(pSIGMA, pKEY):
|
||||||
xReturn = []
|
xReturn = []
|
||||||
pList = list(pSIGMA)
|
pList = pSIGMA[:]
|
||||||
l = len(pList)
|
l = len(pList)
|
||||||
i = pKEY % l; # rang actuel
|
i = pKEY % l; # rang actuel
|
||||||
n = 0; # nombre d'elements traites
|
n = 0; # nombre d'elements traites
|
||||||
|
@ -27,14 +27,22 @@ def shuffle(pSIGMA, pKEY):
|
||||||
return xReturn;
|
return xReturn;
|
||||||
|
|
||||||
|
|
||||||
# fonction qui fait tourner les rotors
|
# 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(rotor):
|
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', ' '];
|
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):
|
for i in range(0, LEVEL):
|
||||||
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
|
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
|
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
|
print ROTOR[i+1] # on l'affiche
|
||||||
|
|
||||||
|
print
|
||||||
|
x = '';
|
||||||
|
while( x == '' ):
|
||||||
|
x = raw_input();
|
||||||
|
rotateRotors(ROTOR);
|
||||||
|
printRotors(ROTOR);
|
||||||
|
print
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue