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

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

Linda Hamilton
Lepaskan: 2024-10-25 03:36:30
asal
1025 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan