oracle加密和解密函数

Posted azuresss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle加密和解密函数相关的知识,希望对你有一定的参考价值。

在数据存入一些敏感信息(姓名,身份证,电话等)时,一般要求都是要进行加密保存的,下面是一组oracle加密和解密函数

 

1. 加密函数

CREATE OR REPLACE function
ds_func_encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is
v_text varchar2(4000);
v_enc varchar2(4000);
raw_input RAW(20000) ;
key_input RAW(1000) ;
decrypted_raw RAW(20000);
v_ErrorText varchar2(500);
begin
if(p_text is null or p_text = ‘‘ )
then return ‘‘;
end if;
dbms_output.put_line(p_text);
v_text := rpad( p_text, (trunc(lengthb(p_text)/8)+1)*8, chr(0));
dbms_output.put_line(v_text);
raw_input := UTL_I18N.STRING_TO_RAW(v_text,‘ZHS16GBK‘);
key_input := UTL_I18N.STRING_TO_RAW(p_key,‘ZHS16GBK‘);
dbms_obfuscation_toolkit.DESEncrypt(input => raw_input,key => key_input,encrypted_data =>decrypted_raw);
v_enc := rawtohex(decrypted_raw);
dbms_output.put_line(v_enc);
return v_enc;
exception
when others then
v_ErrorText := ‘dserror:‘||SUBSTR(SQLERRM, 1, 200);
return v_ErrorText;
end;

 

2. 解密函数

CREATE OR REPLACE function ds_func_decrypt_des(p_text varchar2, p_key varchar2) return varchar2 is
p_text_raw RAW(20000);
p_key_raw RAW(20000);
v_text_raw RAW(20000);
v_text varchar2(4000);
v_ErrorText varchar2(500);
begin
if(p_text is null or p_text = ‘‘ )
then return ‘‘;
end if;
p_text_raw := HEXTORAW(p_text);
p_key_raw := UTL_I18N.STRING_TO_RAW(p_key, ‘ZHS16GBK‘);
dbms_obfuscation_toolkit.DESDECRYPT(input => p_text_raw, key =>p_key_raw, decrypted_data=> v_text_raw);
v_text := UTL_I18N.RAW_TO_CHAR(v_text_raw, ‘ZHS16GBK‘);
dbms_output.put_line(v_text);
return rtrim(v_text,chr(0));
exception
when others then
v_ErrorText := ‘dserror:‘||SUBSTR(SQLERRM, 1, 200);
return v_ErrorText;
end;

 

3. 说明

加密和解密函数都有两个入参 

p_text:加密字段

p_key:加密密钥(防止加密被容易破解,最短8位,不过要记住,否则无法解密)

 














































以上是关于oracle加密和解密函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle DES加密解密包含Java DES加密解密

MySql和Oracle加密函数兼容性

oracle数据库有自带的加密解密功能吗

Oracle PL/SQL dbms_crypto 包可以解密使用 Linux gpg 命令加密的文件吗?

oracle 有md5函数么

oracle加密--wallet