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?