Ho visto vari riferimenti sul web per generare Curve ellittiche KeyPair s in Java, e i due esempi più comunemente citati (ovviamente) utilizzano il provider JDK predefinito e BouncyCastle.
Ma ciò che mi confonde è che il provider predefinito JDK supporta un singolo KeyPairGenerator nome dell'algoritmo di EC mentre BouncyCastle supporta anche questo e due ulteriori nomi di algoritmo distinti di ECDSA e ECDH :
Esempio di provider predefinito JDK:
KeyPairGenerator g = KeyPairGenerator.getInstance("EC");
ECGenParameterSpec spec = new ECGenParameterSpec("secp256r1");
g.initialize(spec);
KeyPair keyPair = g.generateKeyPair();
Esempio di fornitore di BouncyCastle ECDSA :
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
ECGenParameterSpec spec = new ECGenParameterSpec("secp256r1");
g.initialize(spec);
KeyPair keyPair = g.generateKeyPair();
Esempio di fornitore di BouncyCastle ECDH :
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDH", "BC");
ECGenParameterSpec spec = new ECGenParameterSpec("secp256r1");
g.initialize(spec);
KeyPair keyPair = g.generateKeyPair();
In sintesi, il provider BouncyCastle supporta tutti e tre i nomi degli algoritmi, EC , ECDSA e ECDH mentre il provider predefinito JDK supporta solo EC .
Perché la discrepanza? C'è qualche differenza significativa nelle chiavi risultanti utilizzate in uno qualsiasi di questi approcci?
