Cryptage et décryptage à l'aide d'une clef

Description

 
 
Le fonctionnement de ce script se base sur un système de cryptographie qui fut notamment utilisé lors de la seconde guerre mondiale.
Le principe est simple mais très efficace : on code un message à l?aide d?une clef tenue secrète (faisant office de mot de passe) et on obtient une suite de chiffres correspondants.
Cependant impossible d?utiliser un tableau de fréquence pour tenter de découvrir la valeur de chaque caractère car un même chiffre ne code pas forcément la même lettre (c?est d?ailleurs là tout l?intérêt du système).
 
Au départ, on attribue à chaque lettre du message et de la clef, son numéro de 1 à 26. Ainsi "A" correspond à "01", "B" à "02"???et "Z" à "26".
Ensuite, on additionne chaque chiffre du message avec celui de la clef qui correspond, en répétant la clef si nécessaire.
Puis, pour chaque résultat obtenu on fait la division euclidienne par 26 et l?on garde le "reste" :
 
Exemple de division euclidienne par 26
 
1= 0*26 + 1                le reste est 01
14 = 0*26 +14              le reste est 14
26=1*26 +0                le reste est 00
38 = 1*26 + 12           le reste est 12
53 = 2*26 + 1             le reste est 01
 
L?ensemble des "restes" forme alors une succession de chiffres de 00 à 25 : c?est le message une fois codé.
 
Pour décoder le message, on procède en sens inverse : on soustrait chaque chiffre de la clef à celui du message, en répétant la clef si nécessaire.
Pour chaque résultat obtenu, s?il est positif, on le garde, s?il est négatif on lui ajoute 26. Il suffit ensuite de reconvertir le tout en lettres pour redécouvrir le message.
 
A l?origine seules les 26 lettres de l?alphabet étaient utilisées (les chiffres étaient écrits en lettres et il n?y avait aucun espacement entre les mots). Cette version prend en charge les chiffres, les espaces, la ponctuation, les accents de la langue française? Par contre, les majuscules ne sont pas conservées?
Aujourd?hui ce système est moins utilisé car l?utilisation de l?informatique a permis la création d?algorithmes encore plus complexes.
 
-----------------------------------
 
-Exemple :
 
-Clef : NATUREL
-Message à coder : INFORMATIONOK
 
La conversion des lettres en chiffres donne donc tout simplement :
 
N ; A ; T ; U ; R ; E ; L
14 ; 01 ; 20 ; 21 ; 18 ; 05 ;12
 
I ; N ; F ; O ; R ; M ; A ; T ; I ; O ; N ; O ; K
09 ; 14 ; 06 ; 15 ; 18 ; 13 ; 01 ; 20 ; 09 ; 15; 14 ; 15 ; 11
 
-Codage-
 
14 ; 01 ; 20 ; 21 ; 18 ; 05 ;12 ; 14 ; 01 ; 20 ; 21 ; 18 ; 05
+
09 ; 14 ; 06 ; 15 ; 18 ; 13 ; 01 ; 20 ; 09 ; 15; 14 ; 15 ; 11


23 ; 15 ; 26 ; 36 ; 36 ; 18 ; 13 ; 34 ; 10 ; 35 ; 35 ; 33 ; 16
division euclidienne par 26 (nombre caractères)
23 ; 15 ; 00 ; 10 ; 10 ; 18 ; 13 ; 08 ; 10 ; 09 ; 09 ; 07 ; 16
 
On obtient donc le message codé : 23150010101813081009090716
 
Vous pouvez remarquer que le chiffre 10 par exemple code à la fois un O, un R et un I, impossible donc de retrouver le message d?origine de manière linéaire.
 
-Décodage-
 
23 ; 15 ; 00 ; 10 ; 10 ; 18 ; 13 ; 08 ; 10 ; 09 ; 09 ; 07 ; 16
-
14 ; 01 ; 20 ; 21 ; 18 ; 05 ;12 ; 14 ; 01 ; 20 ; 21 ; 18 ; 05


09 ; 14 ; -20 ; -11 ; -08 ; 13 ; 01 ; -06 ; 09 ; -11 ; -12 ; -11 ; 11
on ajoute 26 (nombre de caractères) si le chiffre est négatif
09 ; 14 ; 06 ; 15 ; 18 ; 13 ; 01 ; 20 ; 09 ; 15 ; 14 ; 15 ; 11
 
On retrouve bien : INFORMATIONOK
 
 
-----------------------------------

Source / Exemple :


Tout est dans les fichiers ;)

Conclusion :


Le seul véritable problème de se script c'est qu'il ne traduit pas la la mise en forme... Il faudra que je vois si j'arrive à y rémédier...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.