La fonction de hachage n'est pas isomorphic, c'est-à-dire qu'il n'est pas possible dans le cas général d'inverser la fonction et d'obtenir la valeur originale unique. Ceci est quelque chose de très différent d'être "décodé en toute sécurité". S'il existe des connaissances supplémentaires, par ex. À propos de la longueur de la chaîne, il est très facile d'obtenir toutes les chaînes candidates (c'est-à-dire les chaînes qui correspondent à la valeur de hachage cible)
Donc, ce n'est probablement pas la meilleure façon de décoder le mot de passe. .
exemple simple pour les chaînes de longueur trois:..
select (DBMS_CRYPTO.HASH(RAWTOHEX('Scr'), 2 /* dbms_crypto.HASH_MD5*/)) from DUAL;
93656D76795528C600E7BF7A17B09C8E
with chr as (
select chr(ascii('A') -1 + rownum) chr from dual connect by level <= 26
union all
select chr(ascii('a') -1 + rownum) chr from dual connect by level <= 26
union all
select chr(ascii('0') -1 + rownum) chr from dual connect by level <= 10
),
chr2 as (
select a.chr||b.chr||c.chr str
from chr a, chr b, chr c
)
select * from chr2
where DBMS_CRYPTO.HASH(RAWTOHEX(str), 2 /* dbms_crypto.HASH_MD5*/)
= '93656D76795528C600E7BF7A17B09C8E'
;
Scr