/ / Java - Generazione della coppia di chiavi RSA da 5 componenti CRT: java, cryptography, rsa, bouncycastle

Java - Generazione della coppia di chiavi RSA da 5 componenti CRT: java, cryptography, rsa, bouncycastle

Ho 5 componenti CRT: primeP, primeQ, primeExponentP, primeExponentQ e crtCoefficient. C'è un modo in cui possiamo generare una coppia di chiavi RSA da questi?

Quando ho visto RSAPrivateCrtKeySpec e RSAPublicKeySpec, i parametri mancanti sono modulo, privateExponent e publicExponent.

Qualcuno può aiutarmi a calcolare il modulo, privateExponent e publicExponent?

Esiste un'implementazione di Bouncy Castle per fare questo?

Grazie! Sam

risposte:

1 per risposta № 1

Sì, dovrebbe essere possibile. Beh, a meno che l'esponente pubblico sia davvero grande, ma è improbabile.

Probabilmente puoi indovinare (es. prova 3, 5, 7, 13, 17 e 65537) o forza bruta l'esponente pubblico - poiché solitamente è un piccolo numero primo Il valore 65537 (0x010001, il quarto primo Fermat) è molto probabile. calcola l'esponente privato. Puoi verificare la tua ipotesi usando il segno / verifica con la coppia di chiavi.

Nota che è strano che tu abbia i parametri CRT ma non la chiave pubblica. In realtà, è così strano che probabilmente dovrai codificarlo da solo.


0 per risposta № 2

Fornisci null per i parametri mancanti nelle specifiche CRT. La fabbrica di chiavi lo capirà.

RSAPrivateCrtKeySpec privateSpec = new RSAPrivateCrtKeySpec(null, null, null, p, q, expP, expQ, coeff);
KeyFactory factory = KeyFactory.getInstance("RSA");
privateKey = (RSAPrivateKey)factory.generatePrivate(privateSpec);

Il modulo è primeP * primeQ. Nella maggior parte dei casi, l'esponente pubblico è 65537.