ホームページ  >  記事  >  Java  >  RSA 秘密キーをファイルからロードして「InvalidKeySpecException」を回避する方法

RSA 秘密キーをファイルからロードして「InvalidKeySpecException」を回避する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 03:36:30943ブラウズ

How to Load an RSA Private Key from a File and Avoid the

ファイルから RSA 秘密キーをロードする方法

Java で RSA 秘密キーを操作する場合、多くの場合、RSA 秘密キーをロードする必要があります。ファイルから。これは java.security パッケージを使用して実行できます。ただし、このプロセス中にエラーが発生する場合があります。

一般的なエラーの 1 つは次のとおりです。

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format

これは通常、秘密キー ファイルの形式が正しくないことを示します。秘密キーは PKCS8 形式である必要があります。

秘密キーを PKCS8 形式に変換するには、次のコマンドを使用できます。

openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file  -nocrypt > pkcs8_key

このコマンドを実行すると、変換された秘密キーが pkcs8_key ファイルに保存されます。次に、次のコードを使用して、このファイルを Java プログラムにロードできます:

<code class="java">import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.InvalidKeySpecException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;

public class LoadRsaPrivateKeyFromFile {

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
        // Read the converted private key file
        byte[] keyBytes = Files.readAllBytes(Paths.get("pkcs8_key"));

        // Create a PKCS8EncodedKeySpec to wrap the key bytes
        PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);

        // Create a KeyFactory to generate the private key
        KeyFactory factory = KeyFactory.getInstance("RSA");

        // Generate the private key
        PrivateKey privateKey = factory.generatePrivate(spec);
        
        // Use the private key to sign a message
        // ...
    }
}</code>

以上がRSA 秘密キーをファイルからロードして「InvalidKeySpecException」を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。