Salut,
je développe une application permettant de communiquer de manière sécurisée entre un serveur java et un client mobile (iphone). Pour cela j'utilise le JCE bouncycastle pour java et openssl pour iPhone.
Cependant, j'ai un problème : je chiffre mon message avec RSA sous java mais quand je le déchiffre sous openssl, le message est différent de celui d'origine.
Mon serveur fait comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 //coté serveur langage JAVA //récuperation de la clé publique client RSAPublicKeySpec keySpec = new RSAPublicKeySpec(modulus,exposant); KeyFactory fact = KeyFactory.getInstance("RSA"); Key publicKey = fact.generatePublic(keySpec); //chiffrement du message Cipher cipher = Cipher.getInstance("RSA/None/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE,publicKey); String message = "hello world"; byte[] messageCrypte = cipher.doFinal(message.getBytes());
Le client quant à lui déchiffre comme cela :
Je n'ai pas d'erreurs, cependant, le message déchiffré ne correspond pas au message d'origine.
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 //Coté client langage C RSA * rsa; const char *encrypt,*decrypt; //generation de la paire de clés RSA rsa = RSA_generate_key(1024,65537,NULL,NULL); /* récuperation du message du serveur grace à un web-service */ //dechiffrement du message encrypt = (char*)malloc(RSA_size(rsa)); decrypt = (char*)malloc(RSA_size(rsa)); int error = RSA_private_decrypt(RSA_size(rsa),(unsigned char *)encrypt,(unsigned char *)decrypt,rsa,RSA_NO_PADDING);
Ai-je oublié quelque chose ?
Partager