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.
Chiffre de César
Pour utiliser le chiffre de César, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
nodepour commencer à pratiquer la programmation. - Appelez la fonction
caesarCipheravec la chaîne à chiffrer ou à déchiffrer, la valeur de décalage et un booléen indiquant s'il faut déchiffrer ou non. - La fonction
caesarCipherutilise l'opérateur modulo (%) et l'opérateur ternaire (?) pour calculer la clé de chiffrement ou de déchiffrement correcte. - Elle utilise l'opérateur de propagation (
...) etArray.prototype.map()pour itérer sur les lettres de la chaîne donnée. - Elle utilise
String.prototype.charCodeAt()etString.fromCharCode()pour convertir chaque lettre de manière appropriée, en ignorant les caractères spéciaux, les espaces, etc. - Elle utilise
Array.prototype.join()pour combiner toutes les lettres en une chaîne. - Si vous voulez déchiffrer une chaîne chiffrée, passez
trueau dernier paramètre,decrypt, lors de l'appel de la fonctioncaesarCipher.
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.