J'essaie de crypter du contenu avec une clé privée RSA.Cryptage avec une clé privée RSA en Java
que je suis cet exemple: http://www.junkheap.net/content/public_key_encryption_java
mais la conversion à utiliser les clés privées plutôt que publiques. À la suite de cet exemple, je pense que ce que je dois faire est:
- Lire dans une clé privée DER format
- Générer un PCKS8EncodedKeySpec
- appel generatePrivate() de KeyFactory pour obtenir un objet clé privée
- Utilisez cet objet clé privée avec l'objet Cipher pour faire le cryptage
Ainsi, les étapes:
la clé a été générée FRO m OpenSSL avec:
openssl genrsa -aes256 -out private.pem 2048
puis a été converti en format DER avec:
openssl rsa -in private.pem -outform DER -out private.der
je produis le PKCS8EncodedKeySpec avec:
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;
Et puis générer la clé privée objet avec:
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;
Cependant, l'appel à:
pk = kf.generatePrivate(privateKeySpec);
Je reçois:
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)
Questions:
- Est-ce l'approche générale non?
- La clé PCKS8EncodedKeySpec est-elle la bonne clé à utiliser?
- Des réflexions sur l'erreur de spécification de clé non valide?
Je suis passé par celui-ci et les ont générés avec Java: http://stackoverflow.com/questions/19640735/load-public-key-data-from -fichier – Hayro