diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..fbb5dc3 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,29 @@ +{ + "parserOptions": { + "ecmaVersion": 6 + }, + "rules": { + "keyword-spacing": 1, + "space-before-function-paren": [1, "never"], + "eqeqeq": 1, + "space-infix-ops": 1, + "comma-spacing": 1, + "brace-style": 1, + "no-multiple-empty-lines": 1, + "camelcase": 1, + "func-call-spacing": 1, + "key-spacing": 1, + "semi": 1, + "no-floating-decimal": 1, + "no-multi-spaces": 1, + "object-property-newline": 1, + "padded-blocks": [1, "never"], + "space-before-blocks": 1, + "space-in-parens": 1, + "spaced-comment": 1, + "quotes": [1, "single"], + "id-length": [1, { "exceptions": ["i", "j", "x"] }], + "indent": [1, 2], + "no-array-constructor": 1 + } +} diff --git a/assets/Diagrama de Cifrado de Cesar.pdf b/assets/Diagrama de Cifrado de Cesar.pdf new file mode 100644 index 0000000..bddd9df Binary files /dev/null and b/assets/Diagrama de Cifrado de Cesar.pdf differ diff --git a/assets/images/ASCII.gif b/assets/images/ASCII.gif new file mode 100644 index 0000000..896a2ab Binary files /dev/null and b/assets/images/ASCII.gif differ diff --git a/assets/images/cesar.png b/assets/images/cesar.png new file mode 100644 index 0000000..9558a80 Binary files /dev/null and b/assets/images/cesar.png differ diff --git a/assets/images/one.png b/assets/images/one.png new file mode 100644 index 0000000..2093860 Binary files /dev/null and b/assets/images/one.png differ diff --git a/assets/images/two.png b/assets/images/two.png new file mode 100644 index 0000000..e7084f9 Binary files /dev/null and b/assets/images/two.png differ diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..81de623 --- /dev/null +++ b/css/main.css @@ -0,0 +1,30 @@ +body { + font-family: Georgia, "Times New Roman", + Times, serif; + color: black; + background-color: #33FFF6; + padding: 40px; +} +h1 { + font-family: Helvetica, Geneva, Arial, + SunSans-Regular, sans-serif; + margin-left:360px; + padding: 30px; +} +p{ + font-family: Helvetica, Geneva, Arial, + SunSans-Regular, sans-serif; + font-size:20px; + text-align: justify; +} +.i1{ + + padding: 40px; + position:absolute; +} +.i2{ + margin-left: 650px; + padding: 40px; + margin-bottom: 40px; + position: relative; +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..5142704 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + CIFRADO CESAR + + + + + +

Cifrado de César

+ +

La clave para el Cifrado César sera un número entre 1 y 26. A menos que conozcas la clave (es decir, conozcas el número usado para encriptar el mensaje), no podrás desencriptar el código secreto. El Cifrado César fue uno de los primeros sistemas de cifrado que se inventaron. Con este cifrado, para encriptar un mensaje se toma cada letra del mismo (en criptografía, estas letras se llaman símbolos porque pueden ser letras, números o cualquier otro signo) y se la reemplaza con una letra "desplazada". Si desplazas la letra A un espacio, obtienes la letra B. Si desplazas la A dos espacios, obtienes la letra C.

+ + + +

ASCII

+

Como implementamos este cambio de letras en un programa? Podemos hacer esto representando cada letra como un número llamado ordinal, y luego sumando o restando a este número para formar un nuevo ordinal (y una nueva letra). ASCII (que se pronuncia "asqui" y corresponde a las siglas en inglés de Código Estándar Americano para el Intercambio de Información) es un código que relaciona cada caracter con un número entre 32 y 126.Las mayúsculas de la "A" a la "Z" reciben números ASCII entre 65 y 90. Las minúsculas de "a" a "z" reciben los números ASCII entre 97 y 122. Los caracteres numéricos de "0" a "9" reciben números ASCII de 48 a 57. Las computadoras modernas usan UTF-8 en lugar de ASCII. Pero UTF-8 es compatible con ASCII, de modo que los ordinales UTF-8 para los caracteres ASCII son los mismos que los ordinales ASCII.

+ + + + + + + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..3d52422 --- /dev/null +++ b/js/app.js @@ -0,0 +1,71 @@ +// Pedimos al usuario la acción que desea realizar. +function welcome(option) { + do { + var valid = /^[A-z\s]*$/; // Validamos si el texto corresponde solo a letras. + var answer = prompt('Ingrese el texto que desea cifrar o descifrar'); + if (valid.test(answer) === false) { // Si el cliente no usa letras sólo de la A-z un alert le avisará. + alert('Ingrese solo letras de la A a la Z'); + } + } while (answer === '' || valid.test(answer) === false || answer === null); // Si está vacío, o no es de A-z le avisa y le vuelve a preguntar. + + + do { + var answer1 = prompt('Ingresa el número de lo que quieres hacer: 1) Cifrarlo o 2) Decifrarlo'); + if (answer1 !== '') { + if (answer1 === '1') { + cipher(); // Llama a la funcion cifrar. + } else if (answer1 === '2') { + decipher(); // Llama a la funcion decifrar. + } else { + alert('Ingrese una opción válida: 1 o 2'); + } + } + } while (answer1 === '' || (answer1 !== '1' && answer1 !== '2')); // Si está vacío, o no es '1' o '2' vuelve a preguntar. + + + function cipher() { // Función que cifra o codifica un texto. + var arr = []; // Guardamos las letras codificadas. + for (var i = 0; i < answer.length; i++) { + var convertLetter = answer.charCodeAt(i); // Obtenemos el número equivalente en ASCII. + + if (convertLetter >= 65 && convertLetter <= 90) { // Si es mayúsculas continuará asi + var newNumber = (convertLetter - 65 + 33) % 26 + 65; // Fórmula que transforma la mayúscula en su equivalente 33 posiciones hacia la derecha. + var newLetter = String.fromCharCode(newNumber); // El número equivalente lo traduce a letra. + arr.push(newLetter); // Esto pushea la letra mayúscula codificada al array 'arr'. + } + if (convertLetter >= 97 && convertLetter <= 122) { // Si es minúscula continuará asi. + var newNumber2 = (convertLetter - 97 + 33) % 26 + 97; // Fórmula que transforma la mayúscula en su equivalente 33 posiciones hacia la derecha. + var newLetter2 = String.fromCharCode(newNumber2); // El número equivalente lo traduce a letra. + arr.push(newLetter2); // Esto pushea la letra minúscula codificada al array 'arr'. + } + if (convertLetter === 32) { // Si es un espacio devuelve un espacio. 32 en ASCII equivale a un espacio. + arr.push(' '); // Esto pushea el espacio codificado al array 'arr'. + } + } + return alert('Tu texto cifrado es: ' + arr.join('')); // Devuelve una alerta con el array transformado a string. Es la palabra cifrada. + } + + + function decipher() { // Función que decodifica o decifra un texto. + var arr = []; // Guardamos las letras decodificadas. + for (var j = 0; j < answer.length; j++) { + var convertLetter = answer.charCodeAt(j); // Obtenemos el número equivalente en ASCII + if (convertLetter >= 65 && convertLetter <= 90) { // Si es mayúscula continuará asi. + var newNumber3 = (convertLetter - 65 - 33 + 2 * 26) % 26 + 65; // Fórmula que transforma la mayúscula en su equivalente 33 posiciones hacia la izquierda + var newLetter3 = String.fromCharCode(newNumber3); // El número equivalente lo traduce a letra. + arr.push(newLetter3); // Esto pushea la letra mayúscula codificada al array 'arr' + } + if (convertLetter >= 97 && convertLetter <= 122) { // Si es minúscula hace lo siguiente. + var newNumber4 = (convertLetter - 97 - 33 + 2 * 26) % 26 + 97; // Fórmula que transforma la mayúscula en su equivalente 33 posiciones hacia la izquierda + var newLetter4 = String.fromCharCode(newNumber4); // El número equivalente lo traduce a letra. + arr.push(newLetter4); // Esto pushea la letra minúscula codificada al array 'arr' + } + if (convertLetter === 32) { // si es un espacio devuelve un espacio. 32 en ASCII equivale a un espacio. + arr.push(' '); // Esto pushea el espacio codificado al array 'arr' + } + } + return alert('Tu texto cifrado es: ' + arr.join('')); // Devuelve una alerta con el array transformado a string. Es la palabra decifrada. + } +} + +welcome(); // Llamamos a la funcion \ No newline at end of file