-
Problème avec openssl
Bonjour,
je développe une application iPhone permettant de se connecter à un web-service java et de chiffrer les messages avec RSA. Pour cela j'utilise la librairie crypto de openssl.
voila comment cela se passe :
le client (iPhone) génère une paire de clés RSA et envoie sa clé publique au web-service (java), qui chiffre un message et l'envoie au client.
cependant, je n'arrive pas à déchiffrer le message sous iPhone, j' ai toujours la même erreur :
------ > data greater than mod len.
j'ai essayé de changer le padding, ainsi que la taille des clés RSA, mais rien.
Quelqu'un à-t-il une solution?
Merci d'avance.
-
Le message d'erreur semble vouloir dire que les données à chiffrer (ou déchiffrer) sont plus grandes que le modulus de ta clé.
Quelle est la taille de ta clé et quelle est la taille des données ?
-
la clé fait 1024 bits.
Et pour les données, j'ai juste envoyé "hello" au client pour tester
-
salut,
bon, j'ai bien relu la doc de openssl et apparemment, la taille du message à déchiffrer doit être bien spécifique en fonction de la taille de clé et du padding utilisé.
Cependant, j'ai un nouveau problème, lorsque je déchiffre mon message j’obtiens une suite de caractères ne correspondant pas au message d'origine. J'ai testé différents paddings, j'ai même essayé le codage base64, mais c'est toujours pareil : le massage déchiffré est différent du message d'origine.
avez vous des idées ?
-
Alors après plusieurs recherches sur le net, il semblerait que openssl ne sache pas décrypter le mode "RSA/ECB/PKCS1Padding" que j'utilise sous java.
comment je peux faire pour corriger ce problème ?
-
C'est bon, problème résolu, c'était un problème de Padding.
En effet, le NoPadding ne passe pas entre JAVA et Openssl (C).
Il faut utiliser "RSA/ECB/PKCS1Padding" pour JAVA et
"RSA_PKCS1_PADDING" pour openssl.