Obtention d'une clé privée RSA à partir d'un fichier de clé privée codé PEM BASE64
Lors de la tentative d'extraction d'une clé privée à partir d'un fichier de clé privée codé PEM BASE64 , vous pouvez rencontrer des erreurs comme celles que vous avez décrites. Ceci est généralement dû à une gestion inappropriée de la spécification de clé en raison de l'utilisation de formats de clé non standard.
Résolution des erreurs
Les erreurs que vous rencontrez sont probablement lié à l'utilisation de méthodes incorrectes pour analyser la clé privée. Au lieu de s'appuyer sur des bibliothèques tierces potentiellement non conformes à la FIPS :
Code Java mis à jour à l'aide de sun.security et DerInputStream :
Voici un extrait de code Java mis à jour qui utilise le sun.security et le DerInputStream classes pour analyser les formats PKCS#1 et PKCS#8 de clés privées, tout en garantissant la conformité FIPS :
import sun.security.util.DerInputStream; import sun.security.util.DerValue; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.RSAPrivateCrtKeySpec; import java.util.Base64; public static PrivateKey pemFileLoadPrivateKeyPkcs1OrPkcs8Encoded(File pemFileName) throws GeneralSecurityException, IOException { // ... (code as shown in the question) }
Explication détaillée de l'erreur et de la résolution :
Le L'extrait de code d'origine a tenté d'analyser la clé privée à l'aide du fournisseur IBM FIPS, ce qui n'est peut-être pas la méthode la plus appropriée. Le code mis à jour utilise une approche plus standardisée avec les classes sun.security et DerInputStream pour gérer les formats PKCS#1 et PKCS#8. Cela garantit la conformité FIPS et corrige les erreurs que vous avez rencontrées.
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!