Dado um número inteiro positivo , produza um par de chaves RSA (tanto a chave privada quanto a pública) cujo tamanho da chave é bits.
O algoritmo de geração de chaves RSA é o seguinte:
- Escolher um -bit semiprimo . Deixe os fatores primos de serem e .
- Calcular .
- Escolha um número inteiro tal que e .
- Calcule .
A chave pública é composta por e . A chave privada é .
Regras
- Pode-se presumir que existe pelo menos um semiprimo com comprimento de bits .
- A saída pode estar em qualquer formato consistente e inequívoco.
- e devem ser escolhidos entre distribuições uniformes discretas.
- Você pode assumir que é menor ou igual ao número máximo de bits para números inteiros representáveis no seu idioma, se o seu idioma tiver essa restrição.
code-golf
random
cryptography
Mego
fonte
fonte
Respostas:
JavaScript (ES7), 190 bytes
Retorna
[n,e,d]
.Experimente online!
Devido ao tamanho limitado da pilha de chamadas, isso pode falhar paraN> 13 .
Comentado
fonte
Geléia ,
30292726 bytesExperimente online!
Explicação
fonte
Axioma, 230 bytes
b em b (x) encontraria o bit len de x; randnum (x) com x um número inteiro positivo seria uma função que retornaria um número pseudo-aleatório no intervalo 0 .. (x-1); P em P (n) encontraria um primo pseudoaleatório no intervalo 2 ^ (n-1) .. (2 ^ n-1) [comprimento desse intervalo 2 ^ n-1-2 ^ (n-1) = 2 ^ (n-1) -1]; R em R (n) encontraria [n, e, d] como o exercício diz.
fonte