Vous n'êtes pas connecté. Connexion
|
|
Les flots de caractèresDe $1Table des matièresLe code de CésarDurant la guerre des Gaules, César eut l’idée de communiquer des messages secrets à ses alliés. Sa manière de coder les messages fait sourire aujourd’hui mais avec les Gaulois, il eut du succès… Voici sa technique : Le message à coder est en majuscules, par exemple « LE CIEL TOMBE ! », il peut comporter des espaces et des ponctuations. On ne code que les lettres (minuscules et majuscules), les autres caractères restent inchangés. César commence par choisir un nombre de l’intervalle [1,25], par exemple 3. Ce nombre sera le décalage. Il change chaque lettre du message par la lettre située 3 crans plus loin dans l’alphabet. Par exemple, A devient D, et E devient H. Il obtient alors le message codé « OH FLHO WRPEH ! ». La classe CesarImplanter en Java une classe
Codage et décodage d'un fichier texteOn veut maintenant coder et décoder un fichier texte en utilisant le codage de César. Implanter en Java une classe Codeur qui s'utilise de la façon suivante :
La méthode main de cette classe attend quatre arguments sur la ligne de commande:
Si les arguments utilisés ne correspondent pas aux attentes ou ne sont pas au bon format, on affichera un message d'erreur pour l'utilisateur. Analyse fréquentiellePour casser le code de César, une attaque possible consiste à faire une analyse de fréquence d'apparition des lettres. On compte la fréquence d'apparition de chaque lettre dans le texte crypté et on compare à la fréquence dans un texte de référence pour une langue donnée.
Exemple d'utilisationPour l'entrée suivante (reference.txt): Durant la guerre des Gaules, Cesar eut l’idee de communiquer des messages secrets a ses allies. Sa maniere de coder les messages fait sourire aujourd’hui mais avec les Gaulois, il eut du succes… Voici sa technique : Le message a coder est en majuscules, par exemple « LE CIEL TOMBE ! », il peut comporter des espaces et des ponctuations. On ne code que les lettres (minuscules et majuscules), les autres caracteres restent inchanges. Cesar commence par choisir un nombre de l’intervalle [1,25], par exemple 3. Ce nombre sera le decalage. Il change chaque lettre du message par la lettre situee 3 crans plus loin dans l’alphabet. Par exemple, A devient D, et E devient H. Il obtient alors le message code « OH FLHO WRPEH ! ». la commande
produit le fichier suivant (reference.code.txt): GXUDQW OD JXHUUH GHV JDXOHV, FHVDU HXW O’LGHH GH FRPPXQLTXHU GHV PHVVDJHV VHFUHWV D VHV DOOLHV. VD PDQLHUH GH FRGHU OHV PHVVDJHV IDLW VRXULUH DXMRXUG’KXL PDLV DYHF OHV JDXORLV, LO HXW GX VXFFHV… YRLFL VD WHFKQLTXH : OH PHVVDJH D FRGHU HVW HQ PDMXVFXOHV, SDU HAHPSOH « OH FLHO WRPEH ! », LO SHXW FRPSRUWHU GHV HVSDFHV HW GHV SRQFWXDWLRQV. RQ QH FRGH TXH OHV OHWWUHV (PLQXVFXOHV HW PDMXVFXOHV), OHV DXWUHV FDUDFWHUHV UHVWHQW LQFKDQJHV. FHVDU FRPPHQFH SDU FKRLVLU XQ QRPEUH GH O’LQWHUYDOOH [1,25], SDU HAHPSOH 3. FH QRPEUH VHUD OH GHFDODJH. LO FKDQJH FKDTXH OHWWUH GX PHVVDJH SDU OD OHWWUH VLWXHH 3 FUDQV SOXV ORLQ GDQV O’DOSKDEHW. SDU HAHPSOH, D GHYLHQW G, HW H GHYLHQW K. LO REWLHQW DORUV OH PHVVDJH FRGH « RK IOKR ZUSHK ! ». La commande :
produit le fichier suivant (reference.csv): A;47;0.08407871198568873 B;5;0.008944543828264758 C;31;0.055456171735241505 D;21;0.03756708407871199 E;109;0.19499105545617174 F;2;0.0035778175313059034 G;11;0.01967799642218247 H;11;0.01967799642218247 I;28;0.05008944543828265 J;3;0.005366726296958855 K;0;0.0 L;39;0.06976744186046512 M;21;0.03756708407871199 N;25;0.044722719141323794 O;24;0.04293381037567084 P;15;0.026833631484794274 Q;4;0.007155635062611807 R;35;0.0626118067978533 S;57;0.10196779964221825 T;32;0.057245080500894455 U;30;0.05366726296958855 V;5;0.008944543828264758 W;1;0.0017889087656529517 X;3;0.005366726296958855 Y;0;0.0 Z;0;0.0 La commande
donne le résultat suivant alors que l'analyse fréquentielle sur le fichier codé avec César fait apparaître un pique sur le H laissant penser que la clé utilisée est 3: |
Powered by MindTouch Deki Open Source Edition v.8.08 |