Heim > Java > javaLernprogramm > Hauptteil

Wie lade ich einen privaten RSA-Schlüssel aus einer Datei und vermeide die „InvalidKeySpecException'?

Linda Hamilton
Freigeben: 2024-10-25 03:36:30
Original
952 Leute haben es durchsucht

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

So laden Sie einen privaten RSA-Schlüssel aus einer Datei

Bei der Arbeit mit privaten RSA-Schlüsseln in Java ist es häufig erforderlich, diese zu laden aus einer Datei. Dies kann mit dem Paket java.security erfolgen. Bei diesem Vorgang können jedoch manchmal Fehler auftreten.

Ein häufiger Fehler ist:

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Nach dem Login kopieren

Dies weist normalerweise darauf hin, dass die private Schlüsseldatei nicht das richtige Format hat. Der private Schlüssel muss im PKCS8-Format vorliegen.

Um Ihren privaten Schlüssel in das PKCS8-Format zu konvertieren, können Sie den folgenden Befehl verwenden:

openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file  -nocrypt > pkcs8_key
Nach dem Login kopieren

Nach der Ausführung dieses Befehls wird der konvertierte private Schlüssel in der Datei pkcs8_key gespeichert. Anschließend können Sie diese Datei mit dem folgenden Code in Ihr Java-Programm laden:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lade ich einen privaten RSA-Schlüssel aus einer Datei und vermeide die „InvalidKeySpecException'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!