I nostri architetti stanno provando a utilizzare la crittografia asimmetrica non standard utilizzando la crittografia. Vogliono che le chiavi pubbliche e private siano private. Significa che abbiamo 2 sistemi: 1 ° sistema che funziona solo sulla crittografia dei dati e 2 ° - funziona solo sulla decrittografia dei dati. Entrambi i sistemi hanno una parte diversa della chiave. In base abbiamo EC alg e sistemi su JAVA.
Algoritmo asimmetrico, significa che crittografate con una chiave pubblica e decifrate con il privato. Ma nel keystore non possiamo memorizzare la chiave privata senza il pubblico. (Pubblico senza privato va bene, è come il truststore).
Ho provato a convertire il keystore in p12 e fare openssl pkcs12 -in yourP12File.p12 -nocerts -out privateKey.pem
Dopo:
PEMParser pemParser = new PEMParser(new FileReader(privateKeyFile));
Object object = pemParser.readObject();
InputDecryptorProvider pkcs8Prov = new JceOpenSSLPKCS8DecryptorProviderBuilder().build("password".toCharArray());
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
PrivateKey privateKey = null;
if (object instanceof PKCS8EncryptedPrivateKeyInfo) {
final PrivateKeyInfo privateKeyInfo = ((PKCS8EncryptedPrivateKeyInfo) object).decryptPrivateKeyInfo(pkcs8Prov);
privateKey = converter.getPrivateKey(privateKeyInfo);
}
In questa chiave privata vedo la chiave pubblica (riflessione) e posso estrarla.
Anche il comando openssl ec -in privkey.pem -pubout > key.pub
funziona bene. Un modo, che vedo, se leggiamo la chiave privata da jks, non contiene il pubKey. E possiamo serializzarlo su Serializable java e salvarlo. È un buon metodo per salvare separatamente la chiave pubblica e privata?