J'essaie de comparer une somme de contrôle MD5 générée par PHP à un généré par Oracle 10G. Cependant, il semble que je comparais des pommes à des oranges.
Voici ce que j'ai fait pour tester la comparaison: p> la fonction MD5 (vue dans la requête ci-dessus) dans Oracle Utilise le package 'dbms_obfuscation_toolkit.md5' (?) et est défini comme ceci: p> 29dbb90ea99a397b946518c84f45e016
)ù©š9{âeÃOEÃ
5 Réponses :
Il semble que ce qui est imprimé à partir de la requête Oracle est le bytestream brut de la somme de contrôle MD5, gisculé car la plupart de ces octets ne seront pas des caractères ASCII. Essayez de la convertir en premier à Hexadecimal. P>
Il renvoie des octets bruts, vous devez convertir cela en hexagonal.
$x = unpack("H*", $row[0]); echo $x[1];
Si vous souhaitez avoir le MD5 à Oracle, vous pouvez utiliser cette méthode:
select lower(rawtohex(md5hash('foobar'))) from dual
Quand j'essaie d'envelopper mon appel comme ça - RAWTOHEX (DBMS_OBFUSCATION_TOOLKIT.MD5 (INPUT_String => Text)) - Il me dit "Erreur numérique ou de valeur: Hex à une erreur de conversion brute", ce qui est drôle depuis que j'essaie de convertir hex pas hex à cru.
J'ai eu la même "erreur numérique ou de valeur" et j'ai constaté que deux fonctions ensemble fonctionnent: alors vous pouvez exécuter cette requête pour obtenir votre checksum: p> SELECT md5hex( 'my string smoked your hash' ) FROM dual;
Créer une fonction comme suit: et appelez-la comme ceci: p> Il semble que "dbms_obfuscation_toolkit.md5" Ne retourne pas vraiment au format RAW, d'où la nécessité d'appeler "utl_raw.cast_to_raw". Je pourrais avoir tort cependant, il devrait y avoir une meilleure explication à cela. P> p>