DECLARE
l_string NVARCHAR2(600) := '123456';
checksum NVARCHAR2(600);
BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.ENABLE(1000000);
DBMS_OBFUSCATION_TOOLKIT.md5 (input_string => l_string, checksum_string => checksum);
DBMS_OUTPUT.PUT_LINE(RAWTONHEX(utl_raw.cast_to_raw(checksum)));
END;
Valeur attendue: e10adc3949ba59abbe56e057f20f883eNVARCHAR2 MD5 Hash dans Oracle DBMS_OBFUSCATION_TOOLKIT.MD5
Mais il retourne: FFFD00390049FFFD0059FFFDFFFD0056FFFD000FFFFD003E
Remarque Je veux maintenir NVARCHAR2 type de données. La valeur de la variable checksum est stockée dans une colonne de type nvarchar2.
Je suis conscient que md5 accepte et retourne des données dans varchar2. Mais si quelqu'un peut m'aider à comprendre cela en utilisant le type de données nvarchar2, ce serait génial.
Le NLS_CHARACTERSET = AL32UTF8
Ce code ne s'exécute pas lorsque vous obtenez 'ORA-28231: aucune donnée transmise à obfuscation toolkit'. Cela a du sens car vous n'avez défini 'l_string' à rien. Alors, où avez-vous obtenu ces checksums attendus et réels? Sur une note sans rapport, pourquoi le 'commit'? –
Désolé, la valeur de l_string = 123456. Accepte pas besoin de validation. – user357086
S'il vous plaît mettre à jour le code pour montrer le code exact que vous avez couru, y compris le 123456. –