Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2019, à 18:42

fan2tango

[Résolu] Java / Tomcat - Cryptage/Décryptage - jeux de caractères

Bonjour à tous,

Config : Serveur Ubuntu 18.04 , Java OpenJDK 8, Tomcat, Mysql 5.7.25

Le problème que je rencontre est le suivant :
Depuis mon poste Windows, via un prog Java, je lis des données dans un fichier (encodé UTF-8).
Je vais envoyer via une requête sql sur une base distante :
- des champs simples (nom, prénom par exemple)
- un texte encrypté
Je passe depuis le prog sous Windows une requète SQL sur la base distante pour enregistrer mes données, j'envoie une nouvelle requête pour lire l'enregistrement généré, je décrypte ce qui doit l'être, j'enregistre dans un nouveau fichier de contrôle qui me permet de vérifier l'enregistrement, cryptage et décryptage.
Jusque là, tout va bien, le fichier de contrôle est conforme au fichier initial.

L'environnement final étant l'exécution de servlets exploitant la base, je créé un servlet de tests qui lit un enreg de la base, décrypte et retourne une page html  et enregistre en même temps les données dans un fichier log.

1 - Exécution depuis mon poste Windows sur servlet tomcat local qui accède à la base serveur :
- le fichier log est conforme à ce qui est attendu.
- l'affichage html est correct sous réserve de la balise meta charset=iso-8859-1

2 - Exécution en appel du servlet sur le serveur qui héberge la base de données :
- l'affichage (et la donnée dans le fichier log) des champs simples (nom et prénom) et correct
- l'affichage (et la donnée dans le fichier log) du décrypté ne l'est pas sur les caractères accentué (ou autres spéciaux ç, ...)

J'imagine donc que c'est le jeu de caractères sur lequel s'appuie l'encryptage et le décryptage qui n'est pas le même en local et sur le serveur mais j'avoue que je m'y perds.
// Pour le décryptage
BASE64Decoder decoder     = new BASE64Decoder();
byte[] rawBytes     = decoder. decodeBuffer(encodedString);
cipher.init(Cipher.DECRYPT_MODE, key);
finalText     = cipher.doFinal(rawBytes);

Mais je ne sais pas trop où le jeu de caractères intervient vopir même lequel spécifier.

Dernière modification par fan2tango (Le 14/02/2019, à 19:44)

Hors ligne

#2 Le 14/02/2019, à 19:44

fan2tango

Re : [Résolu] Java / Tomcat - Cryptage/Décryptage - jeux de caractères

Réglé.
En cherchant bien comment rédiger mon post précédent, ça m'a permis de comprendre et trouver.
J'ai juste rajouté un new String(finalText,"iso-8859-1");
et Hop, ça fonctionne.

Hors ligne