diff --git a/index.html b/index.html new file mode 100644 index 0000000..de55e67 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Cifrado César + + + + + + \ No newline at end of file diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..827dae0 --- /dev/null +++ b/js/app.js @@ -0,0 +1,121 @@ +// Se solicita ingresar el texto a evaluar +// var textOne = prompt('Ingresar texto a cifrar'); + +// Se codifica la función y se declaran los 2 parámetros string que será el texto ingresado anteriormente y code que es la constante. Para este ejemplo es 33 +// Se declaran las variables a usar de la función +function cipher(string, code) { + var finalStringOne = ''; + var codAsciiOne; + var newStringOne; + var notLetter = 0; + + // Se inicializa el for evaluando cada uno de los caracteres a cifrar + for (i = 0; i < string.length;i++) { + // Se evalua el caso de las mayúsculas a traves de su posición. Debe estar en el rango 65-90. Se aplica la formula para cifrar + if ((string.charCodeAt(i) >= 65) && (string.charCodeAt(i) <= 90)) { + codAsciiOne = ((string.charCodeAt(i) - 65 + code) % 26 + 65); + // Se evalua el caso de las minúsculas a traves de su posición. Debe estar en el rango 97-122. Se aplica la formula para cifrar + } else if ((string.charCodeAt(i) >= 97) && (string.charCodeAt(i) <= 122)) { + codAsciiOne = ((string.charCodeAt(i) - 97 + code) % 26 + 97); + // Se evalua el resto de caracteres que no calzan en mayúsculas y minúsculas. Cambia el estado inicial declarado + } else { + // Luego de aplicar la fórmula se tiene la nueva posición deseada con esta posición se obtiene el texto cifrado + notLetter = 1; + newStringOne = String.fromCharCode(codAsciiOne); + } + + // Se crea una variable que va concatenando los resultados anteriores y devuelve un solo valor + finalStringOne += newStringOne; + } + + // Se ejecuta si es que en el texto se ubico otro tipo de caracteres + if (notLetter === 1) { + finalStringOne = 'Error. Verificar texto ingresado'; + } + // Devuelve el valor de la nueva cadena cifrada + return finalStringOne; +} + +// Invoca la función, llama a los parametros asignados +// cipher(textOne,33); + + +// Se solicita ingresar el texto a evaluar +// var textTwo = finalStringOne; + +// Se codifica la función y se declaran los 2 parámetros string que será el valor cifrado anteriormente y code que es la constante. Para este ejemplo es 33 +function decipher(string, code) { + // Se declaran las variables a usar de la función + var finalStringTwo = ''; + var codAsciiTwo; + var newStringTwo; + var notLetter = 0; + var rest = 0; + + // Se inicializa el for evaluando cada uno de los caracteres a descifrar + for (i = 0; i < string.length; i++) { + /* Se evalua el caso de las mayúsculas a traves de su posición. Debe estar en el rango 65-90. + Se declara una variable resta que toma la posición actual del caracter le resta 65 y 33%26. + Si este valor es negativo a la posición del caracter le suma 65 y 26 */ + + /* Se evalua el caso de las minúsculas a traves de su posición. Debe estar en el rango 97-122. + Se declara una variable resta que toma la posición actual del caracter le resta 97 y 33%26. + Si este valor es negativo a la posición del caracter le suma 97 y 26 */ + + if ((string.charCodeAt(i) >= 65) && (string.charCodeAt(i) <= 90)) { + rest = string.charCodeAt(i) - 65 - code % 26; + if (rest < 0) { + codAsciiTwo = (rest + 65 + 26); + } else { + codAsciiTwo = (rest + 65); + } + } else if ((string.charCodeAt(i) >= 97) && (string.charCodeAt(i) <= 122)) { + rest = string.charCodeAt(i) - 97 - code % 26; + if (rest < 0) { + codAsciiTwo = (rest + 97 + 26); + } else { + codAsciiTwo = (rest + 97); + } + // Se evalua el resto de caracteres que no calzan en mayúsculas y minúsculas. Cambia el estado inicial declarado + } else { + notLetter = 1; + } + // Luego de aplicar la fórmula se tiene la nueva posición deseada con esta posición se obtiene el texto cifrado + newStringTwo = String.fromCharCode(codAsciiTwo); + // Se crea una variable que va concatenando los resultados anteriores y devuelve un solo valor + finalStringTwo += newStringTwo; + } + + // Se ejecuta si es que en el texto se ubico otro tipo de caracteres + if (notLetter === 1) { + finalStringTwo = 'Error. Verificar texto ingresado'; + } + + // Devuelve el valor de la cadena descifrada + return finalStringTwo; +} + +// Menú de opciones +do { + var menu = '1.Cifrar mensaje\n2.Descifrar mensaje\n3.Salir'; + var option = prompt('Seleccione una opción:\n' + menu); + + // Si la opción es 1 se ejecuta la función del cifrado + if (option === '1') { + var textOne = prompt('Ingrese el mensaje:'); + + if (textOne !== '') { + cipher(textOne, 33); + break; + } + + // Si la opción es 2 + } else if (option === '2') { + var textTwo = prompt('Ingrese mensaje a descifrar:'); + // Llamar función decipher + if (textTwo !== '') { + decipher(textTwo, 33); + break; // break para salir del bucle + } + } +} while (option !== '3'); \ No newline at end of file