CREATE OR REPLACE FUNCTION to_md5 (
in_str in varchar2
,is_lower in number default 1
,is_32 in number default 1
)
RETURN VARCHAR2
AS
rst varchar2(4000);
BEGIN
if in_str is null then
rst := 'd41d8cd98f00b204e9800998ecf8427e';
else
rst := in_str;
--rst := convert(rst,'UTF8');
--rst := convert(rst,'ZHS16GBK');
rst := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => rst));
rst := lower(rst);
end if;
if is_lower <= 0 then
rst := upper(rst);
end if;
if is_32 <= 0 then
rst := substr(rst,9,16);
end if;
return rst;
END;