Sorprendentemente, sul Web sono disponibili pochissime informazioni sull'utilizzo dell'API leggera di Bouncy Castle. Dopo aver cercato per un po 'sono stato in grado di mettere insieme un esempio di base:Bouncy Castle Generazione di chiavi in mano RSA con Lightweight API
RSAKeyPairGenerator generator = new RSAKeyPairGenerator();
generator.init(new RSAKeyGenerationParameters
(
new BigInteger("10001", 16),//publicExponent
SecureRandom.getInstance("SHA1PRNG"),//prng
1024,//strength
80//certainty
));
AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();
ho una conoscenza di base della RSA e la matematica che succede dietro le quinte, così ho capito che cosa publicExponent
e strength
sono. Presumo che lo publicExponent
si riferisca ad un coprime di phi(pq)
e da quello che ho raccolto può essere piccolo (come 3) purché venga usato il padding appropriato. Tuttavia, non ho idea di cosa si riferisca a certainty
(qualche posto menzionato potrebbe riferirsi a una percentuale ma voglio essere sicuro). L'uso di SecureRandom
è auto-esplicativo. Il numero documentation of RSAKeyGenerationParameters è completamente privo di valore (nessuna sorpresa). La mia unica ipotesi è che abbia qualcosa a che fare con la precisione dei tasti generati, ma di nuovo voglio essere sicuro. Quindi la mia domanda è quali sono i valori appropriati per certainty
e publicExponent
?
P.S. Si prega di non rispondere con "dipende dal contesto - quanto sicuro si desidera che l'informazione sia". E 'abbastanza sicuro assumere il più alto grado di sicurezza (es. Chiave RSA 4096-bit o superiore) se non diversamente specificato ... Gradirei anche collegamenti a fonti che danno un buon esempio dell'uso dell'API Lightweight di Bouncy Castle (non sono a tutti interessati all'implementazione della JCA o ad alcuni esempi che lo riguardano).
Dato che il punto del "probabile primo" è che non si può tenerlo in considerazione, come si può verificare se è relativamente primo ad un altro numero? La verifica della primità relativa non è solo un altro controllo probabilistico? – Jherico
La primità relativa può essere controllata facilmente calcolando GCD. Se è 1, 2 numeri sono relativi prime. –
Non * è * impossibile generare in modo definitivo numeri interi, ma è più costoso e considerato non necessario per RSA. Ueli Maurer ha dato un algoritmo veloce per questo molti anni fa. –