Maison >Java >javaDidacticiel >Comment extraire une clé privée RSA d'un fichier de clé privée codé PEM BASE64 en Java ?
Obtention de la clé privée RSA à partir d'un fichier de clé privée encodé PEM BASE64
Dans certains scénarios, vous pouvez rencontrer le besoin d'extraire la clé privée RSA à partir d'un fichier de clé privée codé en PEM BASE64. Les fonctionnalités intégrées de Java peuvent entraîner une erreur « InvalidKeySpecException » lors de la tentative de décodage de la clé. Pour résoudre ce problème, suivez les étapes suivantes :
1. Comprendre les formats PKCS :
Il existe deux formats PKCS courants pour les clés privées : PKCS#1 et PKCS#8. PKCS#1 est plus ancien et représenté par l'extension de fichier « .pem », tandis que PKCS#8 est plus récent et utilise généralement l'extension « .key ».
2. Identifiez le format PEM du fichier de clé :
Examinez le contenu du fichier de clé privée. S'il commence par "-----BEGIN PRIVATE KEY-----" et se termine par "-----END PRIVATE KEY-----", il est au format PKCS#8. S'il commence par "-----BEGIN RSA PRIVATE KEY-----" et se termine par "-----END RSA PRIVATE KEY-----", il est au format PKCS#1.
3. Sélectionnez le code Java approprié :
En fonction du format de votre fichier de clé privée, utilisez l'extrait de code correspondant fourni :
Pour le format PKCS#8 :
byte[] pkcs8EncodedKey = Base64.getDecoder().decode(privateKeyPem); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(new PKCS8EncodedKeySpec(pkcs8EncodedKey));
Pour le format PKCS#1 :
DerInputStream derReader = new DerInputStream(Base64.getDecoder().decode(privateKeyPem)); DerValue[] seq = derReader.getSequence(0); BigInteger modulus = seq[1].getBigInteger(); BigInteger publicExp = seq[2].getBigInteger(); BigInteger privateExp = seq[3].getBigInteger(); // ... Continue extracting the remaining components and construct the RSAPrivateCrtKeySpec KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(keySpec);
En suivant ces étapes et en utilisant l'extrait de code Java approprié, vous pouvez obtenir avec succès la clé privée RSA de un fichier de clé privée codé PEM BASE64 et utilisez-le pour vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!