Introducción
En este laboratorio, exploraremos el cifrado César, un algoritmo de cifrado simple que desplaza cada letra de una cadena dada un cierto número de posiciones hacia abajo en el alfabeto. Implementaremos el cifrado César en JavaScript, utilizando una combinación de manipulación de cadenas y métodos de arrays, y aprenderemos cómo cifrar y descifrar mensajes con esta técnica. Este laboratorio es una excelente oportunidad para practicar tus habilidades de JavaScript y obtener una mejor comprensión de los algoritmos de cifrado.
Cifrado César
Para utilizar el cifrado César, siga estos pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Llame a la función
caesarCiphercon la cadena a cifrar o descifrar, el valor de desplazamiento y un booleano que indique si se debe descifrar o no. - La función
caesarCipherutiliza el operador módulo (%) y el operador ternario (?) para calcular la clave de cifrado o descifrado correcta. - Utiliza el operador de propagación (
...) yArray.prototype.map()para iterar sobre las letras de la cadena dada. - Utiliza
String.prototype.charCodeAt()yString.fromCharCode()para convertir cada letra adecuadamente, ignorando los caracteres especiales, espacios, etc. - Utiliza
Array.prototype.join()para combinar todas las letras en una cadena. - Si desea descifrar una cadena cifrada, pase
trueal último parámetro,decrypt, cuando llame a la funcióncaesarCipher.
A continuación, se muestra el código de la función 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("");
};
A continuación, se muestran algunos ejemplos de cómo utilizar la función caesarCipher:
caesarCipher("Hello World!", -3); // 'Ebiil Tloia!'
caesarCipher("Ebiil Tloia!", 23, true); // 'Hello World!'
Resumen
¡Felicitaciones! Has completado el laboratorio del Cifrado César. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.