Convertir un String en [] byte et l' inverse [Résolu]

info19 17 Messages postés lundi 27 septembre 2010Date d'inscription 28 décembre 2012 Dernière intervention - 20 déc. 2012 à 21:43 - Dernière réponse : info19 17 Messages postés lundi 27 septembre 2010Date d'inscription 28 décembre 2012 Dernière intervention
- 21 déc. 2012 à 23:08
Bonjour,

je veut faire une petite application client/serveur en java ,la communication entre le client et le serveur doit être sécurisée.
je suit cette démarche :
un client demande une connexion au serveur ,
le serveur génère une paire de clé - en utilisant rsa- , et envoie au client la clé public
le client génère une clé de session pour le chiffrement de donnée , if chiffre la clé de session par la clé public du serveur, et renvoi la clé de session chiffrée au serveur, ce dernier la déchiffrer en utilisant sa clé privée
le probleme est le suivant

au niveau du client:
byte[] encrypted = rsa.encrypt(clé_session.getBytes()); // ceci me donne [B@35f03691 j'ai envoyé  encrypted.toString() par socket au serveur


le serveur recupere cette valeur : [B@35f03691 mais sous forme de string
je veut la converti en tableau de byte pour la passer comme param de fonction de dechiffrement
 byte[] Todecrypt=clé_recu.getBytes(); // cela me donne : [B@67ce85c4  qui est diff/rent de la valeur recu comme string 


recu par socket: [B@35f03691 !=[B@67ce85c4
est donc le dechffrement de cette valeur ne donne plus la cle de session réelle

merci pour votre aide
Afficher la suite 

Votre réponse

3 réponses

Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 21 déc. 2012 à 21:37
+3
Utile
Salut,

Si tu print un tableau de bytes sans passer par un string tu auras un truc type [B@xxxx ce qui représente:
[ : Type tableau (voir jni signatures)
B : Type byte (voir jni signatures)
@ : La suite est une adresse
X : La suite de chiffre après le @ représente sont adresse donc fatalement différent entre le serveur et le client.

Sinon pour le titre:
byte [] bytes = ....;
String str = ...;
/* String vers bytes */
bytes = str.getBytes();
str = new String(bytes);

Si tu veux comparer des String java oublie le != et utilise equals, compareTo, etc...

-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
info19 17 Messages postés lundi 27 septembre 2010Date d'inscription 28 décembre 2012 Dernière intervention - 21 déc. 2012 à 23:05
+3
Utile
salut,
merci pour votre reponse
mon problème est que je suis obligée de faire

byte [] bytes = ....;
String str = ...;
/* String vers bytes */
bytes = str.getBytes();
bytes.tostring() // pout faire passer comme parametre de la methode socket.write()
str = new String(bytes); //ceci donc me donne un autre string 



enfin j'ai trouvé la solution :
coté client
byte[]tab -> BigInteger en utilisant new BigInteger(tab) 
la valeur envoyé comme un string 

//coté serveur 

byte [] tab =new BigInteger (str_clé_recu).toByteArray();
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de info19
info19 17 Messages postés lundi 27 septembre 2010Date d'inscription 28 décembre 2012 Dernière intervention - 21 déc. 2012 à 23:08
0
Utile
comment puisse je signaler le sujet comme résolu.?
Commenter la réponse de info19

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.