Je fichier p12, je suis extrais la clé privée en utilisant OpenSSL, j'ai un mot de passe pour l'extraire.clé privée Extraction cryptage pkcs12 et le texte
openssl pkcs12 -in my.p12 -nocerts -out privateKey.pem
Et après que je reçois ma clé privée, je suis en train d'utiliser cette clé pour le chiffrement:
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
KeyPair keyPair = readKeyPair(privateKey, "testpassword".toCharArray());
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
byte[] textEncrypted = cipher.doFinal("hello world".getBytes());
System.out.println("encrypted: "+new String(textEncrypted));
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
byte[] textDecrypted = cipher.doFinal(textEncrypted);
System.out.println("decrypted: "+new String(textDecrypted));
}
private static KeyPair readKeyPair(File privateKey, char[] keyPassword) throws IOException {
FileReader fileReader = new FileReader(privateKey);
PEMReader r = new PEMReader(fileReader, new DefaultPasswordFinder(keyPassword));
try {
return (KeyPair) r.readObject(); // this returns null
} catch (IOException ex) {
throw new IOException("The private key could not be decrypted", ex);
} finally {
r.close();
fileReader.close();
}
}
r.readObject(); renvoie la valeur null. Mais quand je crée une clé privée par moi-même par cette commande:
openssl genrsa -out privkey.pem 2048
Le code ci-dessus fonctionne très bien.
- Comment puis-je extraire correctement la clé privée du fichier p12?
- Ou est-il possible d'utiliser le fichier p12 pour crypter/décrypter le texte sans extraire par la ligne de commande?
Je sais qu'il est juste PKCS#12 est juste fichier archaive qui stocke les clés.
Salut Rob merci pour votre réponse. J'ai essayé de telle manière avant. mon keystore n'a aucun alias en quelque sorte. est-il possible de trouver un moyen. J'ai un certificat avec le fichier p12. – user2662294
Ajout de certains détails sur la liste du contenu du fichier de clés, peut-être vous pouvez trouver l'alias qui est sur l'entrée qui vous intéresse. – Rob
Il me montre ceci: Keystore type: PKCS12 Fournisseur de magasin de clés: SunJSSE Votre keystore contient 0 entrées', BTW, j'ai * .cer, fichier avec mon fichier .p12. Y a-t-il quelque chose à voir avec ça? Merci! – user2662294