Wie erstelle ich eine RSAPrivateKey Beispiel aus einem byte-array?
Hallo, ich versuche eine Datei entschlüsseln, verschlüsselt mit dem öffentlichen RSA-Schlüssel. Ich habe eine 3072-bit-RSA-private-key der entsprechenden pubkey. Die Datei enthält die rohen bytes der PKCS8-Codierung der Schlüssel. die habe ich in ein byte-array rsa_priv.
public void decrypt()
{
try
{
SecretKeySpec sk=new SecretKeySpec(rsa_priv,"RSA/EBC/PKCS8");
Cipher dec = Cipher.getInstance("RSA");
dec.init(Cipher.DECRYPT_MODE, sk,new IvParameterSpec(iv));
//OAEPWithSHA-512AndMGF1Padding
byte temp[];
temp=dec.doFinal(sess);
String t=temp.toString();
System.out.println("Session key is:"+ t);
//session=dec(sess,rsa_priv);OAEPWithSHA-256AndMGF1Padding
}
catch (Exception e)
{
System.out.println("Exception occured:"+ e);
}
}
wenn ich diesen code ausführen bekomme ich folgende
Exception occured:java.security.InvalidKeyException: No installed provider
supports this key: javax.crypto.spec.SecretKeySpec
Habe ich importiert diese
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.crypto.KeyGenerator;
import java.security.*;
import javax.crypto.SecretKey;
import javax.crypto.spec.OAEPParameterSpec;
mir bitte jemand helfen
- Willkommen neue user! Vergessen Sie nicht, die änderungen anzeigen, die made, die von Jeremy D. Bitte Folgen Sie up auf Ihre Frage und vergessen Sie nicht zu akzeptieren, die Antworten, dass löst Ihr Problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie haben nur die innere Codierung (wie zur Verfügung gestellt von
RSAPrivateKey.getEncoded()
) und nicht eine PKCS#8 verschlüsselten privaten RSA-Schlüssel:Gibt es mehrere Probleme.
Erstens, es ist
ECB
- Modus, nichtEBC
; das ist der erste Fehler, den du bekommen.Zweite, ein RSA-Schlüssel ist nicht eine SecretKeySpec.
Wie liest man einen Passwort-verschlüsselten Schlüssel mit java? zeigt eine Methode für das abrufen der RSA-Schlüssel, und sobald Sie dass haben, http://www.flexiprovider.de/examples/ExampleRSA.html zeigt, wie es zu benutzen.
Sollte man wirklich nur kopieren und fügen Sie den Fehler in Google, bevor Sie posten es hier.
Diese wahrscheinlich löst das dein problem.
Grundsätzlich müssen Sie eine
init()
Methode, die Einstellung der Anbieter, wie beschrieben in dem link.Dafür müssen Sie zum importieren der BouncyCastle-Bibliothek.