Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1670 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Résultat de procédure stockée qui varie selon la JVM d'exécution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Résultat de procédure stockée qui varie selon la JVM d'exécution

n°855671
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 22-09-2004 à 14:49:19  profilanswer
 

Salut,
 
J'ai un souci sur l'un de mes projets. Je stocke dans une base de données Oracle des mots de passe chiffrés avec une procédure stockée livrée en natif par Oracle (Procédure DESEncrypt/DESDecrypt pour ceux qui connaissent).
 
Lorsque j'exécute mon code depuis mon poste de développement sous Windows, une chaîne "toto" est chiffrée en une chaîne A. Mais l'exécution du même code depuis un serveur AIX avec "toto" en entrée me donne une chaîne B.
 
J'ai placé des logs dans tous les sens, les paramètres de la procédure stockés sont identiques (chaîne à chiffrer et clé de chiffrage) que l'on soit sous WIN ou AIX mais le résultat est différent. (J'ai comparé les octets chaque caractère des paramètres...)
 
Je pense qu'il doit s'agir d'un problème d'encodage de caractères mais je n'ai trouvé aucune méthode à utiliser pour préciser/forcer celui-ci. De plus, le driver JDBC Oracle (thin) est censé effectuer la conversion des paramètres vers le jeu de caractères de la DB de manière transparente.
 
 
Déjà eu ce genre de problème ? Est-ce-que quelqu'un aurait une piste vers où chercher ?
 
Merci


Message édité par machinbidule1974 le 23-09-2004 à 12:19:50
mood
Publicité
Posté le 22-09-2004 à 14:49:19  profilanswer
 

n°855676
d4rK 3Mpr0​R
fr33 Kevin
Posté le 22-09-2004 à 14:56:59  profilanswer
 

sur "toto" je doute que tu ais des incompatibilités d'encoding (à moins d'attaquer du bizarre), à mon avis, cherche ailleur.

n°855678
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 22-09-2004 à 14:58:28  profilanswer
 

C'est ce que je me disais aussi mais avec des chaînes uniquement alphanumériques, mon problème survient

n°855684
d4rK 3Mpr0​R
fr33 Kevin
Posté le 22-09-2004 à 15:05:27  profilanswer
 

hum, à moins que utf16 ...
tu peux inspecter la chaine en java elle est bonne ?

n°855713
the real m​oins moins
Posté le 22-09-2004 à 15:46:44  profilanswer
 

c'est quoi ce titre [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°855725
sircam
I Like Trains
Posté le 22-09-2004 à 16:06:33  profilanswer
 


Ca ne te dit rien ? A moi non plus.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°855878
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 22-09-2004 à 19:24:02  profilanswer
 


 
J'en déduis donc que ça ne te dit rien comme problème...
 
Sacré --  :jap:

n°855880
the real m​oins moins
Posté le 22-09-2004 à 19:32:46  profilanswer
 

ben tu crois que j'ai lu? tu pollues le visitage de forum, mec :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856066
veryfree
Posté le 22-09-2004 à 23:27:04  profilanswer
 

En encryptant deux fois de suite ta chaine sur la meme machine c'est vraiment la meme qui resort a chaque fois?
 

n°856192
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 23-09-2004 à 08:33:13  profilanswer
 

Oui, le cryptage est répétable et redonne à chaque fois le même résultat. De plus, le décryptage fonctionne. C'est juste que le résultat chiffré diffère selon la plate-forme d'exécution.
 
C'est même pire que ça puisque sous WIN je peux avoir un truc chiffré (une fois encodé en base 64) qui donne:
 
pILm5tI=
 
et sous AIX:
 
mILf5gY=
 
(J'ai vérifié, l'encodage 64 fonctionne sur les 2 plate-formes)
 
Il y a de grosses ressemblances entre les 2 chaînes, tous les caractères ne diffèrent pas. C'est ce qui m'avait fait dire que l'encodage de char était en jeu pourtant les String encodés sont tout ce qu'il y a de + simple.
 
C'est bizzarre...

mood
Publicité
Posté le 23-09-2004 à 08:33:13  profilanswer
 

n°856194
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 23-09-2004 à 08:34:23  profilanswer
 

the real moins moins a écrit :

ben tu crois que j'ai lu? tu pollues le visitage de forum, mec :o


 
Alors ne pollues pas mon topic, stp :o

n°856313
pascal34
one point !
Posté le 23-09-2004 à 11:43:13  profilanswer
 

Faut faire gaffe, même une chaîne comme 'toto' qui ne contient aucun caratère bizarre est codée différemment suivant que c'est Unicode(2 octets), UTF-8(multi-octet), etc.
 
Si l'algo traite la chaîne en flux d'octet, et pas en flux de caractère, c'est foutu

n°856315
the real m​oins moins
Posté le 23-09-2004 à 11:47:59  profilanswer
 

mais met un titre décent bon sang [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856321
R3g
fonctionnaire certifié ITIL
Posté le 23-09-2004 à 11:51:35  profilanswer
 

c'est surement une connerie, mais il ne peut pas y avoir de problème d'endianess ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°856342
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 23-09-2004 à 12:30:05  profilanswer
 

J'ai changé le titre.  
 
Quant à l'encodage endian (High Endian / Low Endian), j'y avais pensé mais ça devrait me donner des String chiffrées complètement différentes alors que là, certaines portions correspondent. Ce sont certaines lettres qui sont "substituées" mais pas toutes...
 
Il doit y avoir un bug dans l'une des "fonctions" que j'utilise (procédure stockée, driver Oracle thin...). Ou alors une sorte de paramètre caché qu'on positionne de manière non intuitive...
 
Tiens, ça me fait aussi penser que ce problème de chiffrage se manifeste sur la même machine selon le mode de lancement de WebSphere. Lancée en ligne de commande, le serveur et l'appli démarrent normalement et tout marche. Mais lancé via le crontab, le serveur et l'appli démarrent mais le chiffrage déconne.
 

n°856344
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 23-09-2004 à 12:33:52  profilanswer
 

pascal34 a écrit :

Faut faire gaffe, même une chaîne comme 'toto' qui ne contient aucun caratère bizarre est codée différemment suivant que c'est Unicode(2 octets), UTF-8(multi-octet), etc.
 
Si l'algo traite la chaîne en flux d'octet, et pas en flux de caractère, c'est foutu


 
En recherchant sur le net, j'ai lu que toute String littérale (comme "toto" ) est stockée dans la JVM en Unicode. Le programmeur n'a pas à s'occuper de l'encodage sauf s'il fait des interfaces vers un système gérant un autre jeu de chars

n°856397
pascal34
one point !
Posté le 23-09-2004 à 13:56:24  profilanswer
 

machinbidule1974 a écrit :

Le programmeur n'a pas à s'occuper de l'encodage sauf s'il fait des interfaces vers un système gérant un autre jeu de chars


 
Commme par exemple les bases de données qu'on peut créer chacune avec un encoding spécifique.

n°856428
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 23-09-2004 à 14:38:34  profilanswer
 

Le driver thin d'Oracle gère l'encodage vers la DB de manière transparente (lu sur le net pendant mes recherches)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Résultat de procédure stockée qui varie selon la JVM d'exécution

 

Sujets relatifs
[MySQL] Comment lire le résultat du benchmark?Comment régler la taille de memoire JVM ?
[Postgresql] Erreur étrange sur la création d'une procédurearreter execution page JSP
problème d'exécution d'un jarPasser le resultat d'une commande shell en variable ?
Fenêtre modale, résultat, etc...Un variable dans le resultat d'une requete SQL
Problème : script continue avant la fin de l'execution system()Date stockée au format strtotime, comment convertir ?
Plus de sujets relatifs à : Résultat de procédure stockée qui varie selon la JVM d'exécution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR