Bonjour,
Alors voilà mon problème, je cherche à vérifier que l'encryption RSA d'une donnée via un certificat s'est bien passée, en la décryptant grâce à la clé public dudit certificat. Essuyant de nombreux échecs j'en suis venu à pondre un petit bout de code qui résume mon problème, le voici :
Sur le dernier doFinal() j'ai l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 /***********************************************************/ String message = "un message à encrypter"; String alias = "FAKE-alias"; String pass = "FAKE-pass"; // on load le keystore KeyStore ks = KeyStore.getInstance("Windows-MY"); ks.load(null, null); // on récupère un certif, sa clé privée et sa clé publique X509Certificate certificate = (X509Certificate)ks.getCertificate(alias); PrivateKey privatekey = (PrivateKey)ks.getKey(alias, pass.toCharArray()); PublicKey publickey = certificate.getPublicKey(); // on ciphe dans un sens Cipher cipherencrypt = Cipher.getInstance("RSA"); cipherencrypt.init(Cipher.ENCRYPT_MODE, privatekey); byte[] encrypted = cipherencrypt.doFinal(message.getBytes()); // on ciphe dans l'autre sens Cipher cipherdecrypt = Cipher.getInstance("RSA"); cipherdecrypt.init(Cipher.DECRYPT_MODE, publickey); byte[] decrypted = cipherdecrypt.doFinal(encrypted); System.out.println(new String(decrypted)); /***********************************************************/
javax.crypto.BadPaddingException: Data must start with zero
(je vous passe le reste de la pile)
* Pour être sûr de pas écrire n'importe quoi j'ai tenté la même manip' avec une paire de clés générées par KeyPairGenerator, et j'obtiens bien la relation : Message = Décrypte(CléPublique, Encrypte(ClePrivée, Message)
* J'ai également tenté différents Modes et Paddings pour l'instanciation des cipher (ex. : "RSA/ECB/PKCS1Padding")
Comme vous pouvez le voir je patauge bien comme il faut. Toute aide sera donc la bienvenue, merci d'avance
PS : j'ai cherché des pistes sur différents forum (notamment celui-ci), mais plus j'en lis plus ça m'embrouille, rien ne fonctionne comme je l'imagine :s
Partager