Heim >Java >javaLernprogramm >Wie lade ich einen privaten RSA-Schlüssel aus einer Datei und vermeide die „InvalidKeySpecException'?
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
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 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>
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!