|
|
|
|
183
|
|
183
|
|
184
|
#### Instrucciones:
|
184
|
#### Instrucciones:
|
185
|
|
185
|
|
186
|
-1. Descarga la carpeta Repetitions-VigenereCypher de Bitbucket usando un terminal, moviéndote al directorio Documents/eip, y escribiendo el comando git clone http://bitbucket.org/eip-uprrp/repetitions-vigenerecypher.
|
|
|
|
|
186
|
+1. Carga a `QtCreator` el proyecto `VigenereCypher`. Hay dos maneras de hacer esto:
|
187
|
|
187
|
|
188
|
-2. Carga a Qt Creator el proyecto VigenereCypher haciendo doble "click" en el archivo VigenereCypher.pro que se encuentra en la carpeta Documents/eip/Repetitions-VigenereCypher de tu computadora.
|
|
|
|
|
188
|
+ * Utilizando la máquina virtual: Haz doble “click” en el archivo `VigenereCypher.pro` que se encuentra en el directorio `/home/eip/labs/repetitions-vigenerecypher` de la máquina virtual.
|
|
|
189
|
+ * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/repetitions-vigenerecypher` para descargar la carpeta `repetitions-vigenerecypher` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `VigenereCypher.pro`.
|
189
|
|
190
|
|
190
|
-3. Estarás añadiendo código en el archivo `cypher.cpp`. En este archivo, la función `cypher` recibe un mensaje y una clave del mismo largo y consistentes solo de letras, y devuelve el mensaje cifrado por el cifrador Vigenere. Tu tarea es completar la función de cifrado.
|
|
|
|
|
191
|
+2. Estarás añadiendo código en el archivo `cypher.cpp`. En este archivo, la función `cypher` recibe un mensaje y una clave del mismo largo y consistentes solo de letras, y devuelve el mensaje cifrado por el cifrador Vigenere. Tu tarea es completar la función de cifrado.
|
191
|
|
192
|
|
192
|
El código debe verificar si el mensaje y la clave consisten solo de letras y tienen el mismo largo; si esto no ocurre, el mensaje cifrado será (literalmente) `"MENSAJE O CLAVE INVALIDO"`. El programa debe implementar el cifrador Vigenere para ir cifrando cada letra del mensaje utilizando la clave. Solo debes utilizar las funciones mencionadas en la sección anterior. Para simplificar el código tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
|
193
|
El código debe verificar si el mensaje y la clave consisten solo de letras y tienen el mismo largo; si esto no ocurre, el mensaje cifrado será (literalmente) `"MENSAJE O CLAVE INVALIDO"`. El programa debe implementar el cifrador Vigenere para ir cifrando cada letra del mensaje utilizando la clave. Solo debes utilizar las funciones mencionadas en la sección anterior. Para simplificar el código tu programa debe cambiar todas las letras del mensaje y la clave a mayúsculas.
|
193
|
|
194
|
|
194
|
-4. Al terminar tu código, ve a la función `main` y descomenta la invocación a la función de prueba unitaria `test_cypher1`. Esa función realiza varias invocaciones a la función `cypher` para validar si sus resultados son correctos. Tu función `cypher` debe pasar todas las pruebas antes de continuar con la próxima parte de este laboratorio.
|
|
|
|
|
195
|
+3. Al terminar tu código, ve a la función `main` y descomenta la invocación a la función de prueba unitaria `test_cypher1`. Esa función realiza varias invocaciones a la función `cypher` para validar si sus resultados son correctos. Tu función `cypher` debe pasar todas las pruebas antes de continuar con la próxima parte de este laboratorio.
|
195
|
|
196
|
|
196
|
|
197
|
|
197
|
### Ejercicio 2 - Cifrador con clave y mensaje de largos arbitrarios
|
198
|
### Ejercicio 2 - Cifrador con clave y mensaje de largos arbitrarios
|
|
|
|
|
202
|
|
203
|
|
203
|
1. Escribe el código de la función `cypher` para que reciba un mensaje y una clave y devuelva el mensaje cifrado por el cifrador Vigenere. En esta ocasión, el mensaje y la clave pueden tener cualquier largo y el mensaje puede tener cualquier caracter (la clave solo puede tener letras).
|
204
|
1. Escribe el código de la función `cypher` para que reciba un mensaje y una clave y devuelva el mensaje cifrado por el cifrador Vigenere. En esta ocasión, el mensaje y la clave pueden tener cualquier largo y el mensaje puede tener cualquier caracter (la clave solo puede tener letras).
|
204
|
|
205
|
|
205
|
-El programa debe implementar el cifrador Vigenere para ir cifrando cada caracter del mensaje utilizando las letras de la clave. Para simplificar el código, tu programa debe cambiar todas las letras a mayúsculas. Si alguno de los caracteres del mensaje no es una letra, el cifrador no lo cambia, como se muestra en la Figura 7. Si alguno de los caracteres de la clave no es una letra, el mensaje cifrado será "CLAVE INVALIDA". Solo debes utilizar las funciones mencionadas en la sección anterior.
|
|
|
|
|
206
|
+ El programa debe implementar el cifrador Vigenere para ir cifrando cada caracter del mensaje utilizando las letras de la clave. Para simplificar el código, tu programa debe cambiar todas las letras a mayúsculas. Si alguno de los caracteres del mensaje no es una letra, el cifrador no lo cambia, como se muestra en la Figura 7. Si alguno de los caracteres de la clave no es una letra, el mensaje cifrado será "CLAVE INVALIDA". Solo debes utilizar las funciones mencionadas en la sección anterior.
|
206
|
|
207
|
|
207
|
- ---
|
|
|
|
|
208
|
+ ---
|
208
|
|
209
|
|
209
|
- | mensaje | A | L | & | U | N | A | $ | | C | O | S | A | S |
|
|
|
210
|
- |-----------------|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
211
|
- | clave | M | E | N | O | R | M | E | N | O | R | M | E | N |
|
|
|
212
|
- | mensaje cifrado | M | P | & | I | E | M | $ | | Q | F | E | E | F |
|
|
|
|
|
210
|
+ | mensaje | A | L | & | U | N | A | $ | | C | O | S | A | S |
|
|
|
211
|
+ |-----------------|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
212
|
+ | clave | M | E | N | O | R | M | E | N | O | R | M | E | N |
|
|
|
213
|
+ | mensaje cifrado | M | P | & | I | E | M | $ | | Q | F | E | E | F |
|
213
|
|
214
|
|
214
|
|
215
|
|
215
|
- **Figura 7.** Ejemplo de mensaje y clave con largo distinto y símbolos en el mensaje.
|
|
|
|
|
216
|
+ **Figura 7.** Ejemplo de mensaje y clave con largo distinto y símbolos en el mensaje.
|
216
|
|
217
|
|
217
|
- ---
|
|
|
|
|
218
|
+ ---
|
218
|
|
219
|
|
219
|
2. Al terminar tu código, ve a la función `main`, comenta la invocación a la función de prueba unitaria `test_cypher1` y descomenta la invocación a la función de prueba unitaria `test_cypher2` para que verifiques tu programa.
|
220
|
2. Al terminar tu código, ve a la función `main`, comenta la invocación a la función de prueba unitaria `test_cypher1` y descomenta la invocación a la función de prueba unitaria `test_cypher2` para que verifiques tu programa.
|
220
|
|
221
|
|