1,MD5:调用Oracle工具包
CREATE OR REPLACE function md5(input_string VARCHAR2) return varchar2
IS
raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);
decrypted_raw RAW(2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
--dbms_output.put_line(sysdate || '>加密前的数据:' || input_string);
--dbms_output.put_line(sysdate || '>加密:' || raw_input);
sys.dbms_obfuscation_toolkit.MD5(input => raw_input,checksum => decrypted_raw);
--dbms_output.put_line(sysdate || '> 加密后的数据:' || rawtohex(decrypted_raw));
return lower(rawtohex(decrypted_raw));
END;
2, 加密和解密(调用oracle加密算法包)
create or replace function encrypt (pass varchar2) return varchar2
as
c_encrypt_key varchar2(8) := '12345678';
v_encrypted_val varchar2(38);
v_data varchar2(38);
begin
v_data := RPAD(pass,(TRUNC(LENGTH(pass)/8)+1)*8,CHR(0));
DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(
input_string => v_data,
key_string => c_encrypt_key,
encrypted_string => v_encrypted_val);
return v_encrypted_val;
end encrypt;
create or replace function decrypt(pass varchar2) return varchar2 is
v_decrypted_val varchar2(38);
begin
DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(
input_string => pass,
key_string => c_encrypt_key,
decrypted_string => v_decrypted_val);
return v_decrypted_val;
end decrypt;