Skip to content
This repository was archived by the owner on Jan 8, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -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
}
}
162 changes: 120 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,135 @@
# Cifrado César
CIFRADO CÉSAR
=============

> Recuerda seguir siempre esta [guía de estilos](https://github.com/Laboratoria/js-style-guide/)
### Se puede acceder a este proyecto en
[Github](https://github.com/Tayrih/cifrado_cesar_power_code "Github")

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**
Índice
------
* [Introducción](#cabecera1)
* [Pseudocódigo](#cabecera2)
* [Diagrama de flujo](#cabecera3)
* [Autoras](#cabecera4)
* [Fecha](#cabecera5)

Por ejemplo:
Introducción
-------------------
Este producto se ha creado para presentarse como proyecto final del primer sprint de programación básica, que forma parte de la malla curricular de Laboratoria.

- Texto original: `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
- Texto codificado: `HIJKLMNOPQRSTUVWXYZABCDEFG`

## Entregables
En este proyecto final, titulado “Cifrado César”, se encuentra una carpeta llamada “Javascript”, que contiene la aplicación en la que se encuentra el código del programa conformado por tres funciones: ***validación de dato***, ***cifrado*** y ***descifrado***, y un método que evalúa qué dirección tomar. Además, se encuentra un archivo HTML que presenta el despliegue de un menú con tres opciones: **cifrado**, **descifrado** y **salir**, las que ejecutan un comando en el programa. Asimismo, se encuentra un archivo markdown, titulado “README”, que incluye un enlace a este proyecto en github en la parte superior, un índice con las subdivisiones de ese contenido, una introducción al proyecto, un pseudocódigo que describe el funcionamiento del programa por medio de un lenguaje humano que facilita su entendimiento, y un diagrama de flujo que muestra de forma estructurada y ordenada cuál es el recorrido del dato que ingresa el usuario y el resultado que se imprime en la página web acompañado de un mensaje condicionado al comando por el que se haya optado.

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`
Pseudocódigo
------------
Funcion cipher ( secret)
definir newPhrase como caracter
newPhrase = ''

## Tips
definir toAscci como entero
toAscci =caracter convertido a Ascii

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! :)
Para j=0 Hasta tamaño de secret Con Paso 1 Hacer

Si (toAscci > 64 y toAscci < 91) Entonces
escribir newPhrase = newPhrase + Ascci convertido a caracter mayusculas ((toAscci - 65 + 33) % 26 + 65));

Si no si
(toAscci > 96 && toAscci < 123) Entonces
escribir newPhrase = newPhrase + Ascci convertido a caracter minusculas((toAscci - 97 + 33) % 26 + 97));
sino
escribir newPhrase;
Fin Si
Fin Para

Fin Funcion

[![tips caesar cipher](https://img.youtube.com/vi/zd8eVrXhs7Y/0.jpg)](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
Funcion decipher( secret)

definir newPhrase como caracter
newPhrase = ''

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
definir toAscci como entero
toAscci =caracter convertido a Ascii

## Criterios de evaluación
Para i=0 Hasta tamaño de secret Con Paso 1 Hacer

Si (toAscci > 64 y toAscci < 91) Entonces
escribir newPhrase = newPhrase + Ascci convertido a caracter mayusculas ((toAscci - 65 - 33 + 26*2) % 26 + 65));

Si no si
(toAscci > 96 && toAscci < 123) Entonces
escribir newPhrase = newPhrase + Ascci convertido a caracter minusculas((toAscci - 97 - 33 + 26*2) % 26 + 97));
sino
escribir newPhrase;
Fin Si
Fin Para

Fin Funcion

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



Funcion validate( date)


Para i=0 Hasta tamaño "date" Con Paso 1 Hacer

Si (el Ascii de date > 64 y el Ascii de date< 91) o (el Ascii de date > 96 y el Ascii de date < 123))
escribir date; //condicionamos a que solo se ingrese letras o mayusculas o minusculas pasando a ascii, una vez convertido condicionamosa que este entre el rango
Si no si ((date igual valor nulo))
escribir "Error";
sino
escribir "Error";
Fin Si
Fin Para

Fin Funcion


~~~
Segun menu
var menu = "Mostramos al usuario un meno con opciones a elegir (1(cifrar), 2(decifrar), 3(salir );
definir phrase como caracter;

opcion_1:
phrase = 'Ingrese un texto a cifrar'
ejecutar (pharse es evaluada en funcion cipher)
escribir texto cifrado;
break;
opcion_2:
phrase = 'Ingrese un texto a descifrar'
ejecutar (pharse es evaluada en funcion decipher)
escribir texto descifrado;
break;

De Otro Modo:
escribir ('Gracias');
break;
por defecto:
mostrar una mensaje('Vuelva a realizar el proceso, recuerde ingresar un numero valido de la lista');

Fin Segun
~~~

Diagrama de flujo
-----------------
![Ingreso de datos](assets/docs/img1.jpg "Ingreso de datos")

Autoras
------
* Tahirih Jaliri Pancca
* Lizbeth Félix Peña
* Gaby Mamani Flores
* Laura Jimenez Hidalgo
* Kattia Rojas
* Kamaly Zapana Lorenzo
* Shannon Rivera Aranibal
* Mily Quispe Yura

Fecha
-----
12/10/2017
Binary file added assets/docs/img1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!DOCTYPE html>

<html>

<head>
<title>Cifrado Cesar</title>
<meta charset="utf-8" />
</head>

<body>
<header>

<h1>Cifrado César</h1>
<input type="text" size="15" maxlength="30" value="" name="nombre" id="palabra">

<button type="button" value="cifrar" onclick="alert(cipher());" >Cifrar</button>
<button type="button" value="decifrar" onclick="alert(decipher());">Decifrar</button>
</header>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
86 changes: 86 additions & 0 deletions js/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
function cipher(secret) {
var secret = document.getElementById('palabra').value;

var newPhrase = '';
/*recorremos todo el string*/

for (var j = 0; j < secret.length; j++) {

var toAscii = secret.charCodeAt(j);
//convierte el string ingresado a su equivalente en Ascii en la posicion i

if (toAscii > 64 && toAscii < 91) // formula para mayusculas
newPhrase += String.fromCharCode((toAscii - 65 + 33) % 26 + 65);
else if (toAscii > 96 && toAscii < 123) // para minusculas
newPhrase += String.fromCharCode((toAscii - 97 + 33) % 26 + 97);
else
newPhrase += String.fromCharCode(toAscii);

}

return newPhrase;
}


function decipher(secret) {
var secret = document.getElementById('palabra').value;
var newPhrase = '';

for (var i = 0; i < secret.length; i++) {

var toAscii = secret.charCodeAt(i); //convierte el string ingresado a su equivalente en Ascii en la posicion i

if (toAscii > 64 && toAscii < 91) //para mayusculas
newPhrase += String.fromCharCode((toAscii - 65 - 33 + 26 * 2) % 26 + 65);//26*2 porque recorre el abecedario dos veces para decifrar
else if (toAscii > 96 && toAscii < 123) //paraminusculas
newPhrase += String.fromCharCode((toAscii - 97 - 33 + 26 * 2) % 26 + 97);
else
newPhrase += String.fromCharCode(toAscii);
}

return newPhrase;

}




//funcion de validacion de datos

//Evalua solo el primer valor del string ingresado

function validate(date) {

for (var i = 0; i < date.length; i++) {
if ((date.charCodeAt(i) > 64 && date.charCodeAt(i) < 91) || (date.charCodeAt(i) > 96 && date.charCodeAt(i) < 123)) //condicionamos a que solo se ingrese letras o mayusculas o minusculas pasando a ascii, una vez convertido condicionamosa que este entre el rango
return date;
else if (date === null)
return document.write('<p> [ERROR]'); // no ingrese nada
else
return document.write('<p> [ERROR]'); // ingrese numeros o simbolos en el primer valor

}






/*var menu = prompt ('MENU PRINCIPAL CIFRADO CESAR \n\n' + '1- Para cifrar frases \n\n ' + '2.- Para decifrar frases \n\n' + '3.- Salir');
var phrase;
switch (menu) {
case "1":
phrase = prompt ('Ingrese un texto a cifrar');
document.write('<p>El texto cifrado es: \n\n </p> ' + cipher(validate(phrase))); // la frase ingresada primero es validada y luego pasa a la funcion cipher
break;
case "2":
phrase = prompt ('Ingrese un texto a descifrar');
document.write('<p>El texto descifrado es: \n\n </p> ' + decipher(validate(phrase))); // la frase ingresada primero es validada y luego pasa a la funcion decipher
break;
case "3":
document.write('Gracias');
break;
default:
alert('Vuelva a realizar el proceso, recuerde ingresar un numero valido de la lista');

}*/
15 changes: 15 additions & 0 deletions node_modules/.bin/acorn

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions node_modules/.bin/acorn.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/eslint

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions node_modules/.bin/eslint.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions node_modules/.bin/esparse

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions node_modules/.bin/esparse.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading