ホームページ > Java > &#&チュートリアル > Java で PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを抽出する方法

Java で PEM BASE64 でエンコードされた秘密キー ファイルから RSA 秘密キーを抽出する方法

Susan Sarandon
リリース: 2024-11-11 01:26:02
オリジナル
599 人が閲覧しました

How to Extract an RSA Private Key from a PEM BASE64 Encoded Private Key File in Java?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート