Implémentation du chiffre de César en JavaScript

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer le chiffre de César, un algorithme de chiffrement simple qui décale chaque lettre d'une chaîne donnée d'un certain nombre de positions dans l'alphabet. Nous allons implémenter le chiffre de César en JavaScript, en utilisant une combinaison de manipulation de chaînes et de méthodes d'objets, et apprendre à chiffrer et à déchiffrer des messages avec cette technique. Ce laboratoire est une excellente occasion de pratiquer vos compétences en JavaScript et de mieux comprendre les algorithmes de chiffrement.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/data_types -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/arith_ops -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/comp_ops -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/cond_stmts -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/higher_funcs -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} javascript/spread_rest -.-> lab-28183{{"Implémentation du chiffre de César en JavaScript"}} end

Chiffre de César

Pour utiliser le chiffre de César, suivez ces étapes :

  1. Ouvrez le Terminal/SSH et tapez node pour commencer à pratiquer la programmation.
  2. Appelez la fonction caesarCipher avec la chaîne à chiffrer ou à déchiffrer, la valeur de décalage et un booléen indiquant s'il faut déchiffrer ou non.
  3. La fonction caesarCipher utilise l'opérateur modulo (%) et l'opérateur ternaire (?) pour calculer la clé de chiffrement ou de déchiffrement correcte.
  4. Elle utilise l'opérateur de propagation (...) et Array.prototype.map() pour itérer sur les lettres de la chaîne donnée.
  5. Elle utilise String.prototype.charCodeAt() et String.fromCharCode() pour convertir chaque lettre de manière appropriée, en ignorant les caractères spéciaux, les espaces, etc.
  6. Elle utilise Array.prototype.join() pour combiner toutes les lettres en une chaîne.
  7. Si vous voulez déchiffrer une chaîne chiffrée, passez true au dernier paramètre, decrypt, lors de l'appel de la fonction caesarCipher.

Voici le code de la fonction caesarCipher :

const caesarCipher = (str, shift, decrypt = false) => {
  const s = decrypt ? (26 - shift) % 26 : shift;
  const n = s > 0 ? s : 26 + (s % 26);
  return [...str]
    .map((l, i) => {
      const c = str.charCodeAt(i);
      if (c >= 65 && c <= 90)
        return String.fromCharCode(((c - 65 + n) % 26) + 65);
      if (c >= 97 && c <= 122)
        return String.fromCharCode(((c - 97 + n) % 26) + 97);
      return l;
    })
    .join("");
};

Voici quelques exemples d'utilisation de la fonction caesarCipher :

caesarCipher("Hello World!", -3); // 'Ebiil Tloia!'
caesarCipher("Ebiil Tloia!", 23, true); // 'Hello World!'

Sommaire

Félicitations ! Vous avez terminé le laboratoire sur le Chiffre de César. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.