PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを取得する
特定のシナリオでは、RSA 秘密キーを抽出する必要が生じる場合があります。 PEM BASE64 でエンコードされた秘密キー ファイルから。 Java の組み込み機能により、キーをデコードしようとすると「InvalidKeySpecException」エラーが発生する場合があります。この問題を解決するには、次の手順を検討してください。
1. PKCS 形式を理解する:
秘密キーには 2 つの一般的な PKCS 形式、PKCS#1 と PKCS#8 があります。 PKCS#1 は古いもので、ファイル拡張子「.pem」で表されますが、PKCS#8 は新しいもので、一般に拡張子「.key.」を使用します
2。キー ファイルの PEM 形式を特定します:
秘密キー ファイル内の内容を調べます。 「-----BEGIN PRIVATE KEY-----」で始まり「-----END PRIVATE KEY-----」で終わる場合は、PKCS#8 形式です。 「-----BEGIN RSA PRIVATE KEY-----」で始まり「-----END RSA PRIVATE KEY-----」で終わる場合、PKCS#1 形式です。
3.適切な Java コードを選択します:
秘密キー ファイルの形式に応じて、提供されている対応するコード スニペットを使用します:
PKCS#8 形式の場合:
byte[] pkcs8EncodedKey = Base64.getDecoder().decode(privateKeyPem); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(new PKCS8EncodedKeySpec(pkcs8EncodedKey));
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);
これらの手順に従い、適切な Java コード スニペットを使用すると、PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを正常に取得し、特定の要件に使用できます。
以上がJava で PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。