diff --git a/doc/cryptafinity.css b/doc/cryptafinity.css
index 62bfb2f..1094a2e 100644
--- a/doc/cryptafinity.css
+++ b/doc/cryptafinity.css
@@ -1,3 +1,4 @@
+
/* Generated by CaScadeS, a stylesheet editor for Mozilla Composer */
p.code { border: 2px dashed rgb(153, 153, 153);
@@ -9,6 +10,7 @@
font-family: monospace;
}
+@media screen {
div.page { border: 2px dashed rgb(153, 153, 153);
padding: 10px;
top: 10px;
@@ -25,6 +27,7 @@
body { background-color: rgb(51, 51, 51);
}
+}
span.code { border: 1px dashed rgb(153, 153, 153);
background-color: rgb(204, 204, 204);
diff --git a/doc/index.html b/doc/index.html
index 6bc99e6..c2c5071 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1,6 +1,5 @@
-
-
+
@@ -12,9 +11,8 @@
- MiniFTPc
-
-
+
+ CryptAfinity
@@ -60,6 +58,12 @@ CryptAfinity
Documentation
+
+ - Code
+ - Décodeur "Afine"
+ - Décodeur "Vigenère"
+
+
@@ -96,7 +100,7 @@ Auteurs
CryptAfinity a
été entièrement
-réalisé par Glenn ROLLAND <glenux@fr.st>
+réalisé par Glenn ROLLAND <glenux@fr.st> et Roland LAURÈS <shamox@mac.com>
à l'occasion de travaux pratiques du cours de système du
Master 2 Ingénierie Informatique -
Systèmes, Réseaux et Internet.
@@ -308,13 +312,13 @@ texte chiffré.
5.
Documentation
-5.1. Code
+5.1. Code
Vous pouvez trouver la documentation du code de CryptAfinity dans le
dossier doc/html
de l'application, ou en suivant ce lien.
-5.2. Principe du "décodeur Afine"
+5.2. Principe du "décodeur Afine"
On génère l'espace des clefs possibles pour l'alphabet donné en entrée:
@@ -400,31 +404,53 @@ for (kLIt = keyList.begin(); kLIt != keyList.end(); kLIt++){
}
-5.3. Principe du "décodeur Vigenère"
+5.3. Principe du "décodeur Vigenère"
+
On commence par faire récupérer les groupes de caratères qui se répètent dans le texte.
+
-Une fois obtenue plusieurs groupes de lettres, on regarde la distance
-séparrant les deux premiers groupes (note d1) puis la distance
-entre les deux suivant (d2). Le PGCD de d1 et d2, doit donner un
+Une fois les groupes répétés de lettres de plus
+grande longueur obtenus (dans l'ordre décroissant en fonction de
+la longueur), on calcule la distance
+séparant les deux premiers groupes (note d1) puis la distance
+entre les deux suivant (d2).
+On pose K = PGCD(d1, d2). Il est fortement probable que K soit un
multiple de la longueur de la clef. L'hypothèse sous-jacente est
que ces groupes de lettres sont issue du chiffrement des mêmes
-bouts de mots avec les mêmes bouts de la clef. Si le PGCD = 1 on
-peut raisonnablement supposer que ce n'est pas le cas.
+bouts de mots avec les mêmes bouts de la clef. Si le K = 1 on
+peut raisonnablement supposer que ce n'est pas le cas, et qu'il n'y a pas de répétitions.
+
L'étape suivante consiste à faire une analyse de
-fréquence en découpant le texte en un nombre de colonne
-correspondant au pgcd précédemment calculé. On
-tire de cette analyse de fréquence, un ordre de lettre par
-importance. Puis en fonction de données statistiques
-préalables correspondant au contexte connu à prioris du
-texte clair que l'on veut décrypter, on essaie de faire
-correspondre les lettres les plus souvent vu dans le texte avec le
-modèle de fréquence.
+fréquence en découpant le texte en K colonnes. On
+classe ensuite les lettres apparaissant dans les colonnes en fonction
+de leur nombre d'apparitions.
+Dans un monde utopique, il suffirait de calculer la distance entre la
+lettre apparaissant le plus souvent dans la colonne, et celle
+apparaissant le plus souvent dans le langage attendu pour le texte
+clair (l'anglais en l'occurrence).
+Cependant il arrive fréquemment que l'ordre de lettre soit
+légèrement changé par rapport au résultat
+attendu. Dans le programme, on calcule donc pour chaque colonne les
+distances entre les X lettres les plus fréquentes dans la
+colonne et la lettre la plus fréquente dans le langage.
+On génère ensuite un espace de X ^ K clefs a partir des
+combinaisons de ces différents décalages obtenus sur
+chaque colonne.
-Ceci nous donne un ensemble de clef (réduit à un ou pas), dans lequel se trouve normalement la bonne clef.
+Enfin, on décode ensuite le texte avec chacune des clef
+générées, et en fonction de données
+statistiques
+relative à notre connaissance préalable du texte et d'une
+petite marge d'erreur, on filtre les texte déchiffrés.
+(Exemple: les 9 lettres les plus fréquentes représentent 70% du texte, et on une marge de +/- 4%).
+En jouant sur la marge d'erreur, on laisse passer plus ou moins de
+textes déchiffrés, parmi lesquels devrait se trouver le
+texte clair attendu.
+
+
-
-
+