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
Jump to file
Failed to load files.
Loading
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
}
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}
Binary file added Imagenes/Thumbs.db
Binary file not shown.
Binary file added Imagenes/flujo1.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Imagenes/flujo2.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions Js/.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
}
}
56 changes: 56 additions & 0 deletions Js/app.js
Original file line number Diff line number Diff line change
@@ -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);
}
104 changes: 47 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
@@ -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! :)

[![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

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 ;
~~~
![](Imagenes/flujo1.PNG)
![](Imagenes/flujo2.PNG)# Ceasar-Cipher-DCR
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Cifrado Cesar</title>
</head>
<body>
<h1>Cifrado Cesar</h1>
<script type="text/javascript" src="Js/app.js"></script>
</body>
</html>