Blaise de Vigenère diplomate français de la cour d'Henry III de France, (1523-1596), publia, en 1586, dans son Traité des chiffres le principe du chiffre carré connu plus tard sous le nom du chiffrement de Vigenère. Ce chiffrement se base sur la table de Jean Trithème (il l'a nommée tabula recta). Dans cette table, l'alphabet est répété sur 26 lignes, avec un décalage à gauche de une lettre pour chaque nouvelle rangée. Il est amélioré en 1553 par Giovan Batista Belaso. Ce dernier a introduit la notion de clef, qu'il appelle mot de passe. En 1585, Vigenère améliore la table de Trithème en modifiant la façon d'utiliser la clef. Cette technique a introduit une amélioration décisive de la méthode de César, qui était trop facile à craquer. Carré de Vigenère La méthode de Vigenère consiste à substituer à chaque lettre du message à crypter, une lettre de l'alphabet calculée à partir d'une clé. Le calcul de cette clé est basée sur le Carré de Vigenère comme suit:
Soit la phrase à crypter PROGRAMMER EN JAVA, et la clé secrète nuages. Le cryptage se déroule comme suit: On répète autant de fois la clé secrète sur la phrase à crypter
Par la suite, on recherche dans le Carré de Vigenère, la paire désignée par (clé secrète,phrase à crypter). Par exemple, la paire (n,p) correspond à la lettre c ; (u,r) c'est l etc. En appliquant cette technique, vous allez obtenir comme résultat: clomvszgex if wuvg. |
Travail à réaliser
Le fichier Vigenere.java doit contenir la méthode de calcul de Vigenère. Vous pouvez utiliser pour cela, les classes ou méthodes déjà définies dans la classe Cesar.java en utilisant pour cela la notion de paquetage.
Pour tester la méthode de Vigenère, vous devrez inclure une méthode main dans votre fichier. Cette méthode devra se comportez comme suit: exemple -1-: par défaut la clé secrète est NUAGES, et le programme traite la phrase par défaut programmer en java: |
java Vigenere |
Le texte à crypter est : PROGRAMMER EN JAVA |
Le texte crypté est : CLOMVSZGEX IF WUVG |
exemple -2-: la clé secrète est toujours par défaut: NUAGES |
java Vigenere "un autre exemple" |
Le texte à crypter est : UN AUTRE EXEMPLE |
Le texte crypté est : HH AAXJR YXKQHYY |
exemple -3-: 2 arguments |
java Vigenere "un autre exemple" "navigateur" |
Le texte à crypter est : UN AUTRE EXEMPLE |
Le texte crypté est : HN VCZRX IRVZPGM |
arguments:
S'il y a un seul argument, il ne peut s'agir que d'une phrase et la clé secrète par défaut est nuages. S'il y a deux arguments, le premier ne peut s'agir que de la phrase à crypter alors que le second c'est la clé secrète. |