freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/project-euler/problem-59-xor-decryption.s...

2.4 KiB

id challengeType title videoUrl localeTitle
5900f3a81000cf542c50feba 5 Problem 59: XOR decryption Problema 59: descifrado XOR

Description

A cada personaje en una computadora se le asigna un código único y el estándar preferido es ASCII (Código Estándar Americano para el Intercambio de Información). Por ejemplo, mayúscula A = 65, asterisco (*) = 42 y minúscula k = 107. Un método moderno de encriptación es tomar un archivo de texto, convertir los bytes a ASCII, luego XOR cada byte con un valor dado, tomado de un llave secreta. La ventaja de la función XOR es que el uso de la misma clave de cifrado en el texto cifrado restaura el texto simple; por ejemplo, 65 XOR 42 = 107, luego 107 XOR 42 = 65. Para el cifrado irrompible, la clave tiene la misma longitud que el mensaje de texto sin formato, y la clave está formada por bytes aleatorios. El usuario mantendría el mensaje cifrado y la clave de cifrado en diferentes ubicaciones, y sin ambas "mitades", es imposible descifrar el mensaje. Desafortunadamente, este método no es práctico para la mayoría de los usuarios, por lo que el método modificado es usar una contraseña como clave. Si la contraseña es más corta que el mensaje, lo cual es probable, la clave se repite cíclicamente a lo largo del mensaje. El balance para este método es usar una clave de contraseña suficientemente larga para la seguridad, pero lo suficientemente corta como para ser memorable. Su tarea ha sido fácil, ya que la clave de cifrado consta de tres caracteres en minúscula. Utilizando cipher.txt (clic con el botón derecho y 'Guardar enlace / destino como ...'), un archivo que contiene los códigos ASCII cifrados, y el conocimiento de que el texto plano debe contener palabras comunes en inglés, descifrar el mensaje y encontrar la suma de Valores ASCII en el texto original.

Instructions

Tests

tests:
  - text: <code>euler59()</code> debe devolver 107359.
    testString: 'assert.strictEqual(euler59(), 107359, "<code>euler59()</code> should return 107359.");'

Challenge Seed

function euler59() {
  // Good luck!
  return true;
}

euler59();

Solution

// solution required