---
id: 5
localeTitle: 5900f4231000cf542c50ff35
challengeType: 5
title: 'Problem 182: RSA encryption'
---
## Description
El cifrado RSA se basa en el siguiente procedimiento:
Generar dos primos distintos p y q.Compute n = pq y φ = (p-1) (q-1).
Encuentra un entero e, 1 0 Un mensaje en este sistema es un número en el intervalo [0, n-1].
Un texto que se va a cifrar se convierte de alguna manera en mensajes (números en el intervalo [0, n-1]).
Para cifrar el texto, para cada mensaje, m, c = me mod n se calcula.
Para descifrar el texto, se necesita el siguiente procedimiento: calcular d tal que ed = 1 mod φ, luego para cada mensaje cifrado, c, calcular m = cd mod n.
Existen valores de e y m tales que me mod n = m. Llamamos mensajes m para los cuales me mod n = m mensajes no ocultos.
Un problema al elegir e es que no debe haber demasiados mensajes no ocultos. Por ejemplo, vamos a p = 19 y q = 37.
Entonces n = 19 * 37 = 703 y φ = 18 * 36 = 648.
Si elegimos e = 181, entonces, aunque gcd (181,648) = 1 resulta que todos los mensajes posibles m (0≤m≤n-1) no están ocultos al calcularme mod n.
Para cualquier elección válida de e existen algunos mensajes no ocultos.
Es importante que el número de mensajes no ocultos sea mínimo.
Elige p = 1009 y q = 3643.
Encuentra la suma de todos los valores de e, 1 0
## Instructions
## Tests
```yml
tests:
- text: euler182() debe devolver 399788195976.
testString: 'assert.strictEqual(euler182(), 399788195976, "euler182() should return 399788195976.");'
```
## Challenge Seed
```js
function euler182() {
// Good luck!
return true;
}
euler182();
```