PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを取得する
PEM BASE64 でエンコードされた秘密キー ファイルから秘密キーを抽出しようとする場合、説明したようなエラーが発生する可能性があります。これは通常、非標準のキー形式の使用によるキー仕様の不適切な処理が原因で発生します。
エラーへの対処
発生しているエラーは次のとおりです。おそらく、秘密キーを解析するための間違った方法の使用に関連していると考えられます。 FIPS に準拠していない可能性のあるサードパーティ ライブラリに依存する代わりに:
sun.security と DerInputStream を使用した更新された Java コード:
これは、次の更新された Java コード スニペットです。 sun.security クラスと DerInputStream クラスは、FIPS 準拠を確保しながら、PKCS#1 形式と PKCS#8 形式の両方を解析します:
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) }
エラーと解決策の詳細な説明:
元のコード スニペットは、IBM FIPS プロバイダーを使用して秘密キーを解析しようとしましたが、これは最も適切な方法ではない可能性があります。更新されたコードでは、sun.security クラスと DerInputStream クラスを使用したより標準化されたアプローチを使用して、PKCS#1 と PKCS#8 の両方の形式を処理します。これにより、FIPS への準拠が保証され、発生したエラーが解決されます。
以上がJava で PEM ファイルから PKCS#1 および PKCS#8 秘密キーを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。