Ich versuche, einige Inhalte mit einem privaten RSA-Schlüssel zu verschlüsseln.Verschlüsseln mit RSA privaten Schlüssel in Java
Ich verfolge dieses Beispiel: http://www.junkheap.net/content/public_key_encryption_java
aber Umwandlung es eher als öffentlich-private Schlüssel zu verwenden. Nach diesem Beispiel denke ich, was ich tun müssen, ist:
- lesen in einem DER-Format privaten Schlüssel
- Generieren eines PCKS8EncodedKeySpec
- Anruf generatePrivate() von KeyFactory einen privaten Schlüssel-Objekt zu erhalten
- verwenden Sie, dass private Schlüssel-Objekt mit dem Cipher Objekt der Verschlüsselungs
So zu tun, die Schritte:
der Schlüssel wurde fro erzeugt m openssl mit:
openssl genrsa -aes256 -out private.pem 2048
und wurde dann auf DER-Format konvertiert mit:
openssl rsa -in private.pem -outform DER -out private.der
I erzeugen die PKCS8EncodedKeySpec mit:
byte[] encodedKey = new byte[(int)inputKeyFile.length()];
try {
new FileInputStream(inputKeyFile).read(encodedKey);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(encodedKey);
return privateKeySpec;
Und dann den privaten Schlüssel erzeugen Objekt mit:
PrivateKey pk = null;
try {
KeyFactory kf = KeyFactory.getInstance(RSA_METHOD);
pk = kf.generatePrivate(privateKeySpec);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pk;
jedoch auf den Aufruf:
pk = kf.generatePrivate(privateKeySpec);
ich:
java.security.spec.InvalidKeySpecException: Unknown key spec.
at com.sun.net.ssl.internal.ssl.JS_KeyFactory.engineGeneratePrivate(DashoA12275)
at com.sun.net.ssl.internal.ssl.JSA_RSAKeyFactory.engineGeneratePrivate(DashoA12275)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:237)
Fragen:
- Ist der allgemeine Ansatz richtig?
- Ist die PCKS8EncodedKeySpec die richtige Keypec zu verwenden?
- Haben Sie Gedanken über den ungültigen Schlüsselspezifikationsfehler?
ich durch diese gingen und erzeugt sie mit Java: http://stackoverflow.com/questions/19640735/load-public-key-data-from -file – Hayro