Équivalent de RSA_public_decrypt en Java.

Fermé
Astro01 - 14 févr. 2014 à 14:10
 Astro01 - 15 févr. 2014 à 00:25
Bonjour,

Bonjour tout le monde,

J'ai de nouveau un petit problème avec le Java
Je m'explique :
Mon application se connecte a un serveur, envois une requête et reçois une signature.
Je dispose donc d'une public key (qui est statique dans mon code), et d'une signature reçus par le serveur.
Je voudrais faire un RSA_public_decrypt de ma signature avec ma public key.
Cela devrait me fournir une autre public key !

Voici un morceau de code en C de ce que j'aimerais obtenir en Java :
char * DPKey =(char *) malloc(m_publicKey.size());
strcpy(DPKey, m_publicKey.toStdString().c_str());

BIO *bp_d = BIO_new_mem_buf(DPKey, -1);
RSA *my_rsa = PEM_read_bio_RSA_PUBKEY(bp_d, NULL, NULL, NULL);

byte *inputSignature, *outputSignature;
outputSignature = (byte*) malloc(RSA_size(my_rsa));
inputSignature = (byte*)signature.data();

int buflen = RSA_public_decrypt(signature.size(), inputSignature, outputSignature, my_rsa, RSA_PKCS1_PADDING);
m_outputSignatureVector = QByteArray((const char*)outputSignature, buflen);

m_publicKey étant un QString de Qt contenant ma public key.

En Java, j'ai un peu plus de mal a saisir la philosophie pour utiliser les classes qui manipule le RSA.
Voici ce que j'ai commencé a faire :

Base64 base64 = new Base64();
byte[] datas = base64.decode(publicKey.getBytes());

BigInteger pubInt = new BigInteger(1, datas);
try{
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(datas);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKeyStatique = keyFactory.generatePublic(publicKeySpec);
}
catch(Exception e){System.out.println(e);}
Avec publicKey un String de ma public key statique encodé en base 64 et sans les en-tête : -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY-----
Normalement, avec ce code j'ai mon objet représentant ma public key.
Il me manque donc ma signature.

J'ai vus sur internet, qu'il existait une classe Java Signature, mais je n'ai pas du tout compris comment l'utiliser.
Il y a plusieurs méthodes que je n'ai pas compris.

Merci d'avance pour votre aide

A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
14 févr. 2014 à 18:45
"Mon application se connecte a un serveur, envois une requête et reçois une signature."
C'est bizarre, d'habitude la signature c'est celui qui envoie le message qui la donne, pas celui qui reçoit.

Concrètement, en dehors de tout implémentation java ou rsa. Quel est le but de ton application ?
0
Je sais bien que c'est bizarre.
Je n'ai pas implémenté le serveur.

Le but est qu'une fois que j'ai obtenus ma public key. Je crypte les identifiants pour les envoyer au serveur. Cela va me permettre d'authentifier mon client sur le serveur.
0