Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 29-06-2010 01:59:38

Magic-Micky
Invité

Un enigma en php

Salut à tous !
Je me présente rapidement, Mickaël, 17 ans, passionné d'informatique.
Depuis peu, je m'intéresse un poil à la cryptographie, et dernièrement, à Enigma. Grâce à internet, j'ai compris comment fonctionnait la crypto d'Enigma. Et j'ai donc voulu faire une version d'Enigma en php.
Pour que les chose soit plus simple, j'avais décidé de faire une version d'Enigma, avec 3 rotors, et 6 lettres uniquement (de A jusqu'à F).
Mais voilà, j'ai un petit soucis : j'ai l'impression que le "réflecteur" de ma machine ne fonctionne pas. En effet, j'arrive à obtenir la même lettre en clair qu'en codé (alors que le réflecteur est sensé empêché ça, non ?).
Donc voilà comment j'avais définis ma machine :

TABLEAU CONNECTION        REFLECTEUR
A -> C                    A -> D
B -> B                    B -> C
C -> A                    E -> F
D -> F
E -> E
F -> D

ROTOR1            ROTOR2        ROTOR3
A -> E            A -> F         A -> D
B -> A            B -> D        B -> C
C -> F            C -> B        C -> E
D -> B            D -> E        D -> A
E -> D            E -> C        E -> F
F -> C            F -> A        F -> B

( Et voilà mon code : http://pastebin.com/F9ekTT5X mais le problème n'est pas dedans, puisque l'on retrouve le problème même dans la "logique")
Donc on peut voir le problème en faisant deux fois la lettre A :
Premiere fois :
A -> C ->F -> A -> D -> A -> D -> E -> D
Deuxieme fois, après que le rotor 1 ai tourné d'un cran :
A -> C -> A -> F -> B -> C -> E -> C -> A

Donc le problème doit certainement venir des definitions des rotors / de la connectique / du reflecteur, mais pourtant, il ne me semble pas y avoir de problème de ce coté là !
Qu'en pensez vous ?

#2 29-06-2010 08:56:44

ju_bicycle
Membre
Inscription : 31-08-2009
Messages : 79

Re : Un enigma en php

hello,
alors y'a un truc que je pige pas dans ton raisonnement.
Jusqu'au reflecteur, ok tout me semble correct. Mais aprés ton reflecteur, tu devrai prendre tes transformation dans l'autres sens non? De plus il me semble que tu oublie de faire une derniere permutation avec le tableau de connection. J'aurai fais ca sur ta premiere transformation
A -> C ->F -> A -> D -> A -> D -> B -> C->F->D

Malheureusement j'ai pas le temps de vraiment pousser plus loin.
Sinon tu peux peut être simplifier encore en utilisant que deux rotors que tu cables comme dans l'exemple ici:
http://www.bibmath.net/crypto/debvingt/enigmafonc.php3
et comme ca tu verra facilement tes erreurs
++
Julien

Hors ligne

#3 29-06-2010 13:33:54

Magic-Micky
Invité

Re : Un enigma en php

Effectivement, je prenais les transformations dans le mauvais sens au retour ! Et c'est vrai que j'avais oublié le tableau de connexion à la fin ! Merci beaucoup :D

Et donc du coup, ca donne A=>C=>F=>A=>D=>A=>D=>B=>D=>F (tu avais passer deux fois la lettre dans le rotor2, au retour)
Et ainsi de suite, sans jamais obtenir la même lettre qu'au début.

Encore merci, ça à l'air de fonctionner correctement maintenant !

#4 29-06-2010 13:50:25

ju_bicycle
Membre
Inscription : 31-08-2009
Messages : 79

Re : Un enigma en php

Content de t'avoir débloqué.

Au passage le fait de ne pouvoir coder une lettre avec elle-même a été une des grandes faiblesses d'Enigma

bonne continuation
Julien

Hors ligne

#5 29-06-2010 14:48:42

Magic-Micky
Invité

Re : Un enigma en php

Ah moi qui croyait que c'était justement un atout... merci pour l'indication !
J'ai une petite question sur Enigma, est ce que les allemands choisissait une certaines positions initiales des rotors ? Ou alors ils commençait leurs messages toujours avec les rotors sur la position "0" ?

PS : je sais pas si ça vous intéresse, mais voilà mon code complet d'Enigma : http://pastebin.com/cTUyarKr

#6 29-06-2010 15:03:04

ju_bicycle
Membre
Inscription : 31-08-2009
Messages : 79

Re : Un enigma en php

Hello
Bien sur que la l'ordre des rotor (ex: rotor 2, rotor 1 rotor 3), la position initial (position 0,1 ...) ainsi que les connections (qui inversent les lettre) changeaient tous les jours. C'est d'ailleurs la clef de ce systeme.

Si tu t'intéresse a enigma, il y a une article à ce sujet sur bibmath:
http://www.bibmath.net/crypto/debvingt/indexguerre.php3

ainsi que sur ars-cryptographica (que je te recommande chaudement pour toutes question de crypto)
http://www.apprendre-en-ligne.net/crypt … index.html
Nottement le dernier articles "D'autres rotor pour Enigma")

Hors ligne

#7 29-06-2010 18:22:03

Magic-Micky
Invité

Re : Un enigma en php

Merci beaucoup pour ces liens, je vais voir de-suite !

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt neuf moins vingt
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums