11
votes

Obtenir le MD5 d'Oracle pour correspondre à la MD5 de PHP

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> xxx pré>

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à 


0 commentaires

5 Réponses :


7
votes

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.


0 commentaires

14
votes

Il renvoie des octets bruts, vous devez convertir cela en hexagonal.

$x = unpack("H*", $row[0]); 
echo $x[1];


0 commentaires

2
votes

Si vous souhaitez avoir le MD5 à Oracle, vous pouvez utiliser cette méthode:

select lower(rawtohex(md5hash('foobar'))) from dual


1 commentaires

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.



1
votes

J'ai eu la même "erreur numérique ou de valeur" et j'ai constaté que deux fonctions ensemble fonctionnent: xxx pré>

alors vous pouvez exécuter cette requête pour obtenir votre checksum: p>

SELECT md5hex( 'my string smoked your hash' ) FROM dual;


0 commentaires

3
votes

Créer une fonction comme suit: xxx

et appelez-la comme ceci: xxx

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.


0 commentaires