C TP 01 Cryptographie
C TP 01 Cryptographie
C TP 01 Cryptographie
1
3iL I1 01. Cryptographie / Le chiffre de Vigenère
Principe général
Un système de cryptographie difficile à briser fut inventé au
XVIe siècle par le français Blaise de Vigenère. Il consistait en
une combinaison de différents chiffres de César.
Exemple de cryptage
Texte : I L F E R A B E A U D E M
A I N
Clé : S E C R E T S E C R E T
S E C R
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
↓ ↓ ↓ ↓
Résultat : A P H V V T T I C L H X
E E K E
>3iL Ingénieurs
2022-2023 Langage C - TP
2
3iL I1 01. Cryptographie / Le chiffre de Vigenère
Remarques
● On n'utilise uniquement des lettres majuscules. Les lettres accentuées et
les chiffres
sont interdits. (Cette technique a été inventée à une époque où les messages
étaient
rédigés en latin).
● Les espaces sont ignorés. (A l'origine, il n'y avait pas d'espaces, les mots
étaient tous
collés les uns aux autres).
>3iL Ingénieurs
2022-2023 Langage C - TP
4
3iL I1 01. Cryptographie / Le chiffre de Vigenère
affiché.
Clé de cryptage : S E C R E T
↓ ↓ ↓ ↓ ↓ ↓
Clé de décryptage : I W Y J W H
Travail à effectuer :
● Modifiez votre programme pour que, juste après que la clé de cryptage ait
été formatée
(lettres mises en majuscules et espaces supprimés), son contenu soit
remplacé par
celui de la clé de décryptage correspondante.
A présent, votre programme n'est plus un programme de cryptage, mais un
programme
permettant de décrypter des messages qui ont été codés avec la clé indiquée.
● Vérifiez que vous êtes capables de décrypter le message suivant :
− Texte du message crypté : RETAQVFABACAE
− Clé ayant servi à le crypter : MAISON
● Modifiez votre programme pour qu'il permette la saisie par l'utilisateur des
3
informations suivantes :
− Le message à traiter
− La clé de cryptage
− Le type de traitement à effectuer : cryptage ou décryptage.
>3iL Ingénieurs
2022-2023 Langage C - TP
5
3iL I1 01. Cryptographie / Le chiffre de Vigenère
Contrôle qualité
Pour que votre programme soit validé par le Service Qualité de
l'entreprise, il faut qu'il soit conforme aux normes qui ont été
mises en place.
Vérifiez que c"est bien le cas. Sinon, adaptez-le en conséquence.
Conformité du code
● 0 warning
Un avertissement (warning) est une alerte sur un problème potentiel. Même
s'il semble
mineur, il vaut mieux éviter d'en prendre le risque. Si nécessaire,
corrigez votre code
pour que, lors de la compilation, vous obteniez le message "0 warning".
Lisibilité du code
● Noms de variables explicites :
Donnez des noms explicites aux variables.
Utilisez la convention du Java pour l'utilisation des majuscules et des
minuscules,
lorsqu'un nom est composé de plusieurs mots. Exemple : messageEnClair
● Indentation du code :
Votre code doit être indenté de façon à permettre une lisibilité optimale.
Conseil : Utilisez les fonctionnalités de formatage de votre IDE s'il en a.
● Commentaires :
Plutôt que de multiplier les commentaires, il vaut mieux écrire un code qui
soit le plus
compréhensible possible à sa simple lecture :
− Noms des variables explicites,
− Présentation du code bien structurée,
− Simplicité du code.
Mettez des commentaires uniquement lorsque c'est utile pour faciliter la
compréhension
du code. Par exemple :
− En tête d'un bloc, pour décrire brièvement ce qu'il fait (vue d'ensemble)
− Lorsqu'on emploie une "astuce" de programmation qui risque d'être
difficile à
interpréter par la suite.
Acquis
>3iL Ingénieurs
2022-2023 Langage C - TP
6
3iL I1 01. Cryptographie / Le chiffre de Vigenère
>3iL Ingénieurs
2022-2023 Langage C - TP
7
3iL I1 01. Cryptographie / Le chiffre de Vigenère
>3iL Ingénieurs