From 8b6f072ba9b860f666645a6c5e271c39d48a50da Mon Sep 17 00:00:00 2001 From: xdrm Date: Fri, 22 May 2015 11:52:11 +0200 Subject: [PATCH] =?UTF-8?q?Fonctionnalit=C3=A9=20d'auto=20calcul=20du=20no?= =?UTF-8?q?mbre=20de=20rotors=20ajout=C3=A9e=20[stable~90]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/source.py b/source.py index daa89fc..2c4fb53 100644 --- a/source.py +++ b/source.py @@ -1,6 +1,18 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- + + +# fonction qui calcule le nombre de rotors en fonction de la clé pKey et qui retourne un entier +def calcLevel(pKey, pSIGMA): + xN = 0; + for r in range(1,100): + if( pKey >= len(pSIGMA)**r ): # si la clé est inférieure à la valeur max pour r rotors + xN = r; # on enregistre la valeur + else: # sinon (c'est qu'on a dépassé) + break; # on arrête la boucle et on renvoie la derniere valeur de r (xN) + return xN; + # fonction qui retourne une liste de nombres entre 0 pLength a partir d'un nombre # compris entre 0 et pLength**pLevel def decomposeKey(pNum, pLength, pLevel): @@ -91,10 +103,10 @@ SIGMA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&=+^~@%,.?!:[](){}- SIGMA = list(SIGMA); # NOMBRE DE ROTORS LEVEL = 3; # valeur par defaut -LEVEL = int( raw_input('Level: ') ); -# CHOIX DE LA CLE (entre 0 et len(SIGMA)**level-1 ) => simplification grace a keymax -keymax = len(SIGMA)**LEVEL -userkey = int( raw_input('Cle (0 - %d): '%keymax) ); +# CHOIX DE LA CLE +userkey = int( raw_input('Cle: ') ); +# CALCUL de LEVEL en fonction de la clé +LEVEL = calcLevel(userkey, SIGMA); # DECOMPOSITION DE LA CLE PRIMAIRE EN CLES SECONDAIRES KEY = decomposeKey(userkey, len(SIGMA), LEVEL); # CREATION DES ROTORS EN FONCTION DES CLES SECONDAIRES @@ -154,4 +166,3 @@ print 'Enigma :', M -# AUTOLEVEL fonction KEY - BRANCH[autolevel-fonction-key] \ No newline at end of file