Parser une clé rsa

Bonjour,

j'ai créer une bi-clé RSA avec JAVA :
et je recupére ma clé privée sous forme d'un tableau de bytes:


import java.security.KeyPair;
import java.security.KeyPairGenerator;
public class Main {

public static void main(String[] args) throws GeneralSecurityException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair RSAKey = keyPairGenerator.generateKeyPair();

byte[] rsaKey = ((RSAPrivateKey) kPair.getPrivate()).getEncoded();
// Comment recupérer n, e, d, p, q ???
return;
}
}


dans ce tableau on retrouve les valeurs de ma clé :
modulus n
prime 1 p
prime 2 q
public Exponenent e
private exponent d
...

Ma question est comment récupérer ces valeurs ?
Merci beaucoup pour votre aide.

Configuration: Windows / Chrome 85.0.4183.121

1 réponse

  1. Modérateur
    Bonjour,

    Tu peux faire comme ceci :
    // import sun.security.rsa.RSAPrivateCrtKeyImpl;
    RSAPrivateCrtKeyImpl privateKey = (RSAPrivateCrtKeyImpl) RSAKey.getPrivate();
    
    System.out.println("n=" + privateKey.getModulus());
    System.out.println("p=" + privateKey.getPrimeP());
    System.out.println("q=" + privateKey.getPrimeQ());
    System.out.println("d=" + privateKey.getPrivateExponent());
    System.out.println("e=" + privateKey.getPublicExponent());
    1. Merci pour votre réponse,
      savez vous comment importer sun.security.rsa.RSAPrivateCrtKeyImpl ? mon java ne recnnait pas !
    2. Modérateur
      @talbsbastEn effet, dans les dernières versions cela ne fonctionne plus (le module java.base n'exporte pas ce package)

      Donc plutôt qu'utiliser la classe directement, on peut passer par son interface :
      // import java.security.interfaces.RSAPrivateCrtKey;
      RSAPrivateCrtKey privateKey = (RSAPrivateCrtKey) RSAKey.getPrivate();