Decomposition de cle et Creation des rotors finie
This commit is contained in:
parent
da4588aaad
commit
fceb588c84
|
@ -9,11 +9,12 @@ def decomposeKey(pNum, pLength, pLevel):
|
||||||
return xReturn;
|
return xReturn;
|
||||||
|
|
||||||
|
|
||||||
# fonction qui retourne le resultat d'une liste pList melangee par un nombre pNum
|
# fonction qui melange une liste pSIGMA melangee par une cle pKEY
|
||||||
def shuffle(pList, pNum):
|
def shuffle(pSIGMA, pKEY):
|
||||||
xReturn = []
|
xReturn = []
|
||||||
|
pList = list(pSIGMA)
|
||||||
l = len(pList)
|
l = len(pList)
|
||||||
i = pNum % l; # rang actuel
|
i = pKEY % l; # rang actuel
|
||||||
n = 0; # nombre d'elements traites
|
n = 0; # nombre d'elements traites
|
||||||
while( n < len(pList) ):
|
while( n < len(pList) ):
|
||||||
if( pList[i] != '_' ): # si l'element n'est pas traite
|
if( pList[i] != '_' ): # si l'element n'est pas traite
|
||||||
|
@ -22,10 +23,12 @@ def shuffle(pList, pNum):
|
||||||
n += 1; # on met a jour notre indicateur de caracteres traites
|
n += 1; # on met a jour notre indicateur de caracteres traites
|
||||||
else: # si l'element est deja traite
|
else: # si l'element est deja traite
|
||||||
i += 1
|
i += 1
|
||||||
i = (i+pNum) % l
|
i = (i+pKEY) % l
|
||||||
return xReturn
|
return xReturn;
|
||||||
|
|
||||||
|
|
||||||
# fonction qui fait tourner les rotors
|
# fonction qui fait tourner les rotors
|
||||||
|
def rotateRotors(rotor):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,17 +36,19 @@ def shuffle(pList, pNum):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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', ' '];
|
||||||
userkey = 3*(27**0) + 21*(27**1) + 25*(27**2);
|
userkey = 3*(27**0) + 21*(27**1) + 25*(27**2);
|
||||||
level = 3;
|
LEVEL = 3;
|
||||||
keymax = len(sigma)**level
|
keymax = len(SIGMA)**LEVEL
|
||||||
|
|
||||||
# decomposition de n compris entre 0 et len(sigma)**level
|
# decomposition de n compris entre 0 et len(sigma)**level
|
||||||
key = decomposeKey(userkey, len(sigma), level);
|
KEY = decomposeKey(userkey, len(SIGMA), LEVEL);
|
||||||
|
|
||||||
rotor = [];
|
ROTOR = [];
|
||||||
|
ROTOR.append( [] );
|
||||||
# on cree les rotors grace a sigma et aux cles recuperees
|
# on cree les rotors grace a sigma et aux cles recuperees
|
||||||
for i in range(0, level):
|
for i in range(0, LEVEL):
|
||||||
print key[i]
|
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
|
||||||
rotor.append( shuffle(sigma, key[i]) );
|
ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la lettre en premiere position dans la premiere entree du rotor
|
||||||
print rotor[i]
|
print ROTOR[i+1] # on l'affiche
|
Loading…
Reference in New Issue