Rumah  >  Artikel  >  Java  >  Bagaimana untuk Memuatkan Kunci Peribadi RSA daripada Fail dan Mengelakkan \"InvalidKeySpecException\"?

Bagaimana untuk Memuatkan Kunci Peribadi RSA daripada Fail dan Mengelakkan \"InvalidKeySpecException\"?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 03:36:30943semak imbas

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

Cara Memuatkan Kunci Peribadi RSA daripada Fail

Apabila bekerja dengan kunci persendirian RSA di Java, selalunya perlu memuatkannya daripada fail. Ini boleh dilakukan menggunakan pakej java.security. Walau bagaimanapun, kadangkala ralat boleh berlaku semasa proses ini.

Satu ralat biasa ialah:

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

Ini biasanya menunjukkan bahawa fail kunci persendirian tidak berada dalam format yang betul. Kunci persendirian mestilah dalam format PKCS8.

Untuk menukar kunci peribadi anda kepada format PKCS8, anda boleh menggunakan arahan berikut:

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

Selepas menjalankan arahan ini, kunci peribadi yang ditukar akan disimpan dalam fail pkcs8_key. Anda kemudiannya boleh memuatkan fail ini ke dalam program Java anda menggunakan kod berikut:

<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>

Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Kunci Peribadi RSA daripada Fail dan Mengelakkan \"InvalidKeySpecException\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn