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/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3b66410 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.ignoreLimitWarning": true +} \ No newline at end of file diff --git a/Imagenes/Thumbs.db b/Imagenes/Thumbs.db new file mode 100644 index 0000000..3ff010d Binary files /dev/null and b/Imagenes/Thumbs.db differ diff --git a/Imagenes/flujo1.PNG b/Imagenes/flujo1.PNG new file mode 100644 index 0000000..cf5cbfe Binary files /dev/null and b/Imagenes/flujo1.PNG differ diff --git a/Imagenes/flujo2.PNG b/Imagenes/flujo2.PNG new file mode 100644 index 0000000..a3157a1 Binary files /dev/null and b/Imagenes/flujo2.PNG differ diff --git a/Js/.eslintrc b/Js/.eslintrc new file mode 100644 index 0000000..fbb5dc3 --- /dev/null +++ b/Js/.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/Js/app.js b/Js/app.js new file mode 100644 index 0000000..a62539e --- /dev/null +++ b/Js/app.js @@ -0,0 +1,56 @@ +var election = prompt('Elija una de las opciones de cifrado: ' + '1 cifrar ' + '2 decifrar'); +if (election === '1') { + cipher(prompt('Ingresa un texto a cifrar')); +} else if (election === '2') { + decipher(prompt('Ingresa un texto a decifrar')); +} else if (election === '') { + alert('No es valido un campo vacio'); +} + +function cipher(string) { + if (string === '') { + alert('No se permiten campos vacios.'); + } + var StringCode = ''; + + for (i = 0; i < string.length; i++) { + var newASCII = string.charCodeAt(i);// devolvera el numero de i en codigos Unicode ASCII + // MAYUSCULAS.... + if (newASCII >= 65 && newASCII <= 90) {// Rango para solo las mayusculas + var anAletter = (newASCII - 65 + 33) % 26 + 65;// devuelve el valor/numero del codigo ASCII pero al ser rango de 65 a 90 esta pertenece a MAYUSCULAS. + var newletterAlpha = String.fromCharCode(anAletter);// obtiene el valor numero de anAletter y con el fromCharCode imprime la letra. + StringCode += newletterAlpha;// une letra por letra dentro del StringCode. + // MINUSCULAS..... + } else if (newASCII >= 97 && newASCII <= 122) { // en caso contrario si es minuscula entrara en el rango de 97 - 122 + // dentro del rango ASCII + // en este caso la formula cambia ya que estamos agarrando el rango desde 97. + var minusLetter = (newASCII - 97 + 33) % 26 + 97; + var newMinusLetter = String.fromCharCode(minusLetter); + StringCode += newMinusLetter; + } + } + // retorna StringCode para solo imprimir el resultado de este punto, para el cifrado. + return alert(StringCode); +} + +function decipher(string) { + if (string === '') { + alert('No se permiten campos vacios.'); + } + var StringCode = ''; + + for (i = 0 ; i < string.length; i++) { + var newASCII = string.charCodeAt(i); + + if (newASCII >= 65 && newASCII <= 90) { + var anAletter = (newASCII + 65 - 33) % 26 - 65; + var newletterAlpha = String.fromCharCode(anAletter); + StringCode += newletterAlpha; + } else if (newASCII >= 97 && newASCII <= 122) { + var minusLetter = (newASCII + 97 - 33) % 26 - 97; + var newMinusLetter = String.fromCharCode(minusLetter); + StringCode += newMinusLetter; + } + } + return alert(StringCode); +} diff --git a/README.md b/README.md index e2577d6..8208d8b 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,47 @@ -# Cifrado César - -> Recuerda seguir siempre esta [guía de estilos](https://github.com/Laboratoria/js-style-guide/) - -Crea una web que pida, por medio de un `prompt()`, una frase al usuario y -devuelva el mismo mensaje encriptado según el -[algoritmo de Cifrado César](https://en.wikipedia.org/wiki/Caesar_cipher) -con el parámetro de desplazamiento de **33 espacios hacia la derecha** - -Por ejemplo: - -- Texto original: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` -- Texto codificado: `HIJKLMNOPQRSTUVWXYZABCDEFG` - -## Entregables - -Para cada producto debes entregar **un repositorio de GitHub** que -contenga: -1. Archivo `README.md` que explique el **pseudocódigo** de tu solución y su -**diagrama de flujo** -2. Archivo `app.js` con el **código** de tu solución -3. Archivo `index.html` vinculado con tu `app.js` - -## Tips - -A continuación un video de Michelle que te lleva a través de la fórmula -matemática del Cifrado César y un par de cosas más que debes saber para -resolver este reto. ¡Escúchala con detenimiento y sigue sus consejos! :) - -[](https://www.youtube.com/watch?v=zd8eVrXhs7Y) - -También te compartimos más información de lo que Michelle te ha explicado -en el video anterior: - -- [Aprende más sobre `charCodeAt()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt) -- [Aprende más sobre `String.fromCharCode()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode) -- [Aprende más sobre `ASCII`](http://conceptodefinicion.de/ascii/) - -## Consideraciones específicas - -1. Tu programa debe ser capaz de cifrar y descifrar tanto letras - mayúsculas como minúsculas. La fórmula para descifrar es: `(x - n) % 26` -2. Tu código debe estar compuesto por 2 funciones con los siguientes - nombres: `cipher` y `decipher` -3. El usuario no debe poder ingresar un campo vacío o que contenga números - -## Criterios de evaluación - -Se tomarán en cuenta las siguientes consideraciones a la hora de evaluar tu solución: - -1. Nombramiento de variables -2. Indentación -3. Validación de input: el usuario no debe poder ingresar un campo vacío o de tipo que no corresponda -4. Estructura de tus archivos -5. Archivo `README.md` correctamente redactado -6. Uso de comentarios para hacer tu código más legible -7. Que el programa cumpla con el propósito requerido +# Caesar cipher +___ +### Inicio del programa +* Al ingresar elegir entre las dos opciones + 1. Cifrado + 2. Decifrado + +* Si **1** -> Llama función Cipher + 1. Crea variable StringCode. + 2. Inicializa i = 0; si **i** es menor que **String**; aumentar + 1{ + 3. Variable **stringASCII** es igual a **String** donde transformara el numero sacado en i a codigo ASCII. + 4. **SI** NewASCII es >= que 65 y NewASCII es <= 90 { + * anALetter = (NewASCII - 65 + 33) residuo de 26 + 65; + * newLetterAlpha = la respuesta de anALetter convertida a letra; + * se concatena Stringcode += newLetterAlpha; + } + 5. **NO** NewASCII es >= que 97 y NewASCII es <=122 { + * anALetter =(NewASCII - 97 + 33)residuo de 26 + 97; + * minusLetter = la respuesta de anALetter convertida en letra; + * se concatena Stringcode +=minusLetter; + } + } + retornara alerta(StringCode); +} +* Si **2** -> LLama función Decipher + 1. Crea variable StringCode. + 2. Inicializa i = 0; si **i** es menor **String**; aumentar + 1.{ + * varialbe **stringASCII** es igual a **String** donde transformara el numero sacado en i a ASCII. + * **si** NewASCII es >= 65 && NewASCII <=90{ + * variable anALetter =(NewsASCII + 65 - 33) residuo de 26 -65; + * variable newLetterAlpha = la respuesta de anALetter convertida a letra; + * se concatena stringcode += newLetterAlpha; + } + 3. **NO** NewASCII es >= que 97 y NewASCII es <= 122{ + * variable minusLetter = (NewASCII - 97+ 33 ) residuo de 26 - 97; + * variable newMinusLetter = la respuesta de minusLetter convertida a letra; + * se concatena stringCode += newMnusLetter; + } +} +retornar alerta(stringCode); +} + +~~~ +Formula (n + 33) % 26 ; +~~~ + +# Ceasar-Cipher-DCR diff --git a/index.html b/index.html new file mode 100644 index 0000000..505d3e2 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + +
+ + + +