Chiffrement avec une clé privée RSA en Java

Je suis en train de chiffrer certains contenus avec une clé privée RSA.

Je suis en suivant cet exemple:
http://www.junkheap.net/content/public_key_encryption_java

mais la conversion à l'utilisation des clés privées plutôt que publiques. Suivant cet exemple, je pense que ce que j'ai à faire est:

  • Lire dans un DER-format de la clé privée
  • Générer un PCKS8EncodedKeySpec
  • appel generatePrivate() à partir de KeyFactory pour obtenir une clé privée d'objet
  • Utiliser que la clé privée de l'objet avec le Chiffrement objet de faire le cryptage

Donc les étapes:

La clé a été générée à partir d'openssl avec:

openssl genrsa -aes256 -out private.pem 2048

puis a été converti au format DER avec:

openssl rsa -in private.pem -outform DER -out private.der

- Je générer la 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;

Puis générer la clé privée de l'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, sur l'appel de:

pk = kf.generatePrivate(privateKeySpec);

J'obtiens:

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 l'approche générale de droit?
  • Est le PCKS8EncodedKeySpec le droit keyspec à utiliser?
  • Toute réflexion sur la clé non valide spec erreur?

source d'informationauteur wadesworld