Dado un entero positivo , genera un par de claves RSA (tanto la clave privada como la pública) cuya longitud de clave es bits.
El algoritmo de generación de claves RSA es el siguiente:
- Elija un bit semiprime . Deje que los factores primos de sean y .
- Calcule .
- Elija un número entero tal que y .
- Calcule .
La clave pública se compone de y e . La clave privada es d .
Reglas
- Es posible suponer que existe al menos un semiprimo con la longitud de bits .
- La salida puede estar en cualquier formato coherente y sin ambigüedades.
- y deben elegirse entre distribuciones uniformes discretas.
- Puede suponer que es menor o igual que el número máximo de bits para enteros representables en su idioma, si su idioma tiene tal restricción.
Respuestas:
JavaScript (ES7), 190 bytes
Las devoluciones
[n,e,d]
.Pruébalo en línea!
Debido al tamaño limitado de la pila de llamadas, esto puede fallar para .N>13
Comentado
fuente
Jalea ,
30292726 bytesPruébalo en línea!
Explicación
fuente
Axioma, 230 bytes
b en b (x) encontraría el bit len de x; randnum (x) con x un entero positivo sería una función que devuelve un número pseudoaleatorio en el rango 0 .. (x-1); P en P (n) encontraría un primo pseudoaleatorio en el rango 2 ^ (n-1) .. (2 ^ n-1) [longitud de ese rango 2 ^ n-1-2 ^ (n-1) = 2 ^ (n-1) -1]; R en R (n) encontraría [n, e, d] como dice el ejercicio.
fuente