logo

Chiffre de César en cryptographie

  • Le chiffre de César est une technique de cryptage simple utilisée par Jules César pour envoyer des messages secrets à ses alliés. Cela fonctionne en décalant les lettres du message en texte brut d'un certain nombre de positions, appelées décalage ou touche.
  • La technique du chiffre de César est l’une des méthodes de cryptage les plus anciennes et les plus simples. Il s’agit simplement d’un type de chiffre de substitution, c’est-à-dire que chaque lettre d’un texte donné est remplacée par une lettre ayant un nombre fixe de positions dans l’alphabet. Par exemple avec un décalage de 1, A serait remplacé par B, B deviendrait C, et ainsi de suite. La méthode porte apparemment le nom de Jules César, qui l'utilisait apparemment pour communiquer avec ses fonctionnaires.
  • Ainsi, pour chiffrer un texte donné, nous avons besoin d'une valeur entière, appelée décalage, qui indique le nombre de positions vers le bas de chaque lettre du texte.
    Le cryptage peut être représenté en utilisant l'arithmétique modulaire en transformant d'abord les lettres en nombres, selon le schéma A = 0, B = 1,…, Z = 25. Le cryptage d'une lettre par un décalage n peut être décrit mathématiquement comme.
  • Par exemple, si le décalage est de 3, alors la lettre A serait remplacée par la lettre D, B deviendrait E, C deviendrait F, et ainsi de suite. L’alphabet est enroulé de sorte qu’après Z, il recommence à A.
  • Voici un exemple d'utilisation du chiffre César pour chiffrer le message HELLO avec un décalage de 3 :
  1. Notez le message en clair : BONJOUR
  2. Choisissez une valeur de décalage. Dans ce cas, nous utiliserons un décalage de 3.
  3. Remplacez chaque lettre du message en texte brut par la lettre située trois positions à droite dans l'alphabet.

H devient K (décalage 3 de H)

E devient H (décalage 3 de E)



L devient O (décalage 3 de L)

java ajouter à un tableau

L devient O (décalage 3 de L)

O devient R (décalage 3 de O)



installation de la torche

4.Le message crypté est désormais KHOOR.

  • Pour décrypter le message, il vous suffit de décaler chaque lettre du même nombre de positions. Dans ce cas, vous décaleriez chaque lettre de KHOOR de 3 positions pour obtenir le message original, BONJOUR.


E_n(x)=(x+n)mod 26
(Phase de cryptage avec décalage n)

D_n(x)=(x-n)mod 26
(Phase de décryptage avec décalage n)



Chiffre de César 3

Exemples :

 Text : ABCDEFGHIJKLMNOPQRSTUVWXYZ Shift : 23 Cipher : XYZABCDEFGHIJKLMNOPQRSTUVW Text : ATTACKATONCE Shift : 4 Cipher : EXXEGOEXSRGI>

Avantages :

  • Facile à mettre en œuvre et à utiliser, ce qui permet aux débutants de se familiariser avec le cryptage.
  • Peut être physiquement implémenté, par exemple avec un jeu de disques rotatifs ou un jeu de cartes, appelé scytale, qui peut être utile dans certaines situations.
  • Ne nécessite qu’un petit ensemble d’informations pré-partagées.
  • Peut être modifié facilement pour créer une variante plus sécurisée, par exemple en utilisant plusieurs valeurs de décalage ou mots-clés.

Désavantages:

  • Il n’est pas protégé contre les méthodes de décryptage modernes.
  • Vulnérable aux attaques en clair connues, où un attaquant a accès aux versions chiffrées et non chiffrées des mêmes messages.
  • Le petit nombre de clés possibles signifie qu'un attaquant peut facilement essayer toutes les clés possibles jusqu'à ce que la bonne soit trouvée, ce qui le rend vulnérable à une attaque par force brute.
  • Il ne convient pas au cryptage de textes longs car il serait facile à déchiffrer.
  • Il ne convient pas à une communication sécurisée car il se rompt facilement.
  • Ne garantit pas la confidentialité, l'intégrité et l'authenticité d'un message.

Caractéristiques du chiffre César :

  1. Chiffre de substitution : le chiffre de César est un type de chiffre de substitution, dans lequel chaque lettre du texte en clair est remplacée par une lettre correspondant à un nombre fixe de positions dans l'alphabet.
  2. Clé fixe : Le chiffre César utilise une clé fixe, qui correspond au nombre de positions selon lesquelles les lettres sont décalées. Cette clé est connue à la fois de l’expéditeur et du destinataire.
  3. Cryptage symétrique : Le chiffre César est une technique de cryptage symétrique, ce qui signifie que la même clé est utilisée à la fois pour le cryptage et le déchiffrement.
  4. Espace de touches limité : Le chiffre César a un espace de touches très limité de seulement 26 clés possibles, car il n'y a que 26 lettres dans l'alphabet anglais.
  5. Vulnérable aux attaques par force brute : Le chiffre César est vulnérable aux attaques par force brute, car il n'y a que 26 clés possibles à essayer.
  6. Facile à mettre en œuvre : Le chiffre César est très facile à mettre en œuvre et ne nécessite que de simples opérations arithmétiques, ce qui en fait un choix populaire pour les tâches de chiffrement simples.

Règles du chiffre de César :

sinon, bash
  1. Choisissez un nombre entre 1 et 25. Ce sera votre valeur de décalage.
  2. Écrivez les lettres de l'alphabet dans l'ordre, de A à Z.
  3. Décalez chaque lettre de l'alphabet de la valeur de décalage. Par exemple, si la valeur de décalage est 3, A deviendra D, B deviendra E, C deviendra F, et ainsi de suite.
  4. Chiffrez votre message en remplaçant chaque lettre par la lettre décalée correspondante. Par exemple, si la valeur de décalage est 3, le mot bonjour deviendra khoor.
  5. Pour décrypter le message, inversez simplement le processus en décalant chaque lettre du même montant. Par exemple, si la valeur de décalage est 3, le message chiffré khoor deviendra bonjour.

Algorithme pour le chiffre de César :
Saisir:

carte de rendu
  1. Choisissez une valeur de décalage entre 1 et 25.
  2. Écrivez l'alphabet dans l'ordre de A à Z.
  3. Créez un nouvel alphabet en décalant chaque lettre de l'alphabet d'origine de la valeur de décalage. Par exemple, si la valeur de décalage est 3, le nouvel alphabet serait :
  4. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
  5. Remplacez chaque lettre du message par la lettre correspondante du nouvel alphabet. Par exemple, si la valeur de décalage est 3, le mot bonjour deviendra khoor.
  6. Pour déchiffrer le message, décalez chaque lettre du même montant. Par exemple, si la valeur de décalage est 3, le message chiffré khoor deviendra bonjour.

Procédure:

  • Parcourez le texte donné un caractère à la fois.
  • Pour chaque caractère, transformez le caractère donné selon la règle, selon que nous chiffrons ou déchiffrons le texte.
  • Renvoie la nouvelle chaîne générée.

Un programme qui reçoit un texte (chaîne) et une valeur Shift (entier) et renvoie le texte crypté.

C++

// A C++ program to illustrate Caesar Cipher Technique> #include> using> namespace> std;> // This function receives text and shift and> // returns the encrypted text> string encrypt(string text,>int> s)> {> >string result =>''>;> >// traverse text> >for> (>int> i = 0; i // apply transformation to each character // Encrypt Uppercase letters if (isupper(text[i])) result += char(int(text[i] + s - 65) % 26 + 65); // Encrypt Lowercase letters else result += char(int(text[i] + s - 97) % 26 + 97); } // Return the resulting string return result; } // Driver program to test the above function int main() { string text = 'ATTACKATONCE'; int s = 4; cout << 'Text : ' << text; cout << ' Shift: ' << s; cout << ' Cipher: ' << encrypt(text, s); return 0; }>
>
>

Java

//A Java Program to illustrate Caesar Cipher Technique> class> CaesarCipher> {> >// Encrypts text using a shift of s> >public> static> StringBuffer encrypt(String text,>int> s)> >{> >StringBuffer result=>new> StringBuffer();> >for> (>int> i=>0>; i { if (Character.isUpperCase(text.charAt(i))) { char ch = (char)(((int)text.charAt(i) + s - 65) % 26 + 65); result.append(ch); } else { char ch = (char)(((int)text.charAt(i) + s - 97) % 26 + 97); result.append(ch); } } return result; } // Driver code public static void main(String[] args) { String text = 'ATTACKATONCE'; int s = 4; System.out.println('Text : ' + text); System.out.println('Shift : ' + s); System.out.println('Cipher: ' + encrypt(text, s)); } }>
>
>

Python3

#A python program to illustrate Caesar Cipher Technique> def> encrypt(text,s):> >result>=> ''> ># traverse text> >for> i>in> range>(>len>(text)):> >char>=> text[i]> ># Encrypt uppercase characters> >if> (char.isupper()):> >result>+>=> chr>((>ord>(char)>+> s>->65>)>%> 26> +> 65>)> ># Encrypt lowercase characters> >else>:> >result>+>=> chr>((>ord>(char)>+> s>-> 97>)>%> 26> +> 97>)> >return> result> #check the above function> text>=> 'ATTACKATONCE'> s>=> 4> print> (>'Text : '> +> text)> print> (>'Shift : '> +> str>(s))> print> (>'Cipher: '> +> encrypt(text,s))>
>
>

C#

// A C# Program to illustrate Caesar Cipher Technique> using> System;> using> System.Text;> public> class> CaesarCipher> {> >// Encrypts text using a shift on s> >public> static> StringBuilder encrypt(String text,>int> s)> >{> >StringBuilder result=>new> StringBuilder();> >for> (>int> i=0; i { if (char.IsUpper(text[i])) { char ch = (char)(((int)text[i] + s - 65) % 26 + 65); result.Append(ch); } else { char ch = (char)(((int)text[i] + s - 97) % 26 + 97); result.Append(ch); } } return result; } // Driver code public static void Main(String[] args) { String text = 'ATTACKATONCE'; int s = 4; Console.WriteLine('Text : ' + text); Console.WriteLine('Shift : ' + s); Console.WriteLine('Cipher: ' + encrypt(text, s)); } } /* This code contributed by PrinciRaj1992 */>
>
>

PHP

// A PHP program to illustrate Caesar // Cipher Technique // This function receives text and shift // and returns the encrypted text function encrypt($text, $s) { $result = ''; // traverse text for ($i = 0; $i >
>
>

Javascript

> //A Javascript Program to illustrate Caesar Cipher Technique> > >// Encrypts text using a shift on s> >function> encrypt(text, s)> >{> >let result=>''> >for> (let i = 0; i { let char = text[i]; if (char.toUpperCase(text[i])) { let ch = String.fromCharCode((char.charCodeAt(0) + s-65) % 26 + 65); result += ch; } else { let ch = String.fromCharCode((char.charCodeAt(0) + s-97) % 26 + 97); result += ch; } } return result; } // Driver code let text = 'ATTACKATONCE'; let s = 4; document.write('Text : ' + text + ' '); document.write('Shift : ' + s + ' '); document.write('Cipher: ' + encrypt(text, s) + ' '); // This code is contributed by avanitrachhadiya2155>
>
>

Sortir
Text : ATTACKATONCE Shift: 4 Cipher: EXXEGOEXSRGI>

Complexité temporelle : O(N) où N est la longueur du texte donné
Espace auxiliaire : SUR)

Comment décrypter ?
Nous pouvons soit écrire une autre fonction decrypt similaire à encrypt, qui appliquera le décalage donné dans la direction opposée pour décrypter le texte original. Cependant on peut utiliser la propriété cyclique du chiffre sous modulo, on peut donc simplement observer

Cipher(n) = De-cipher(26-n)>

Par conséquent, nous pouvons utiliser la même fonction pour décrypter, à la place, nous modifierons la valeur de décalage de telle sorte que shift = 26-shift (reportez-vous à ceci pour un exemple d'exécution en C++).