zoukankan      html  css  js  c++  java
  • 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位,不过要记住,否则无法解密)

  • 相关阅读:
    layui 标签页切换
    m1配置多个git账户
    sqlserver 获取表和字段的注释方法
    springboot+mybatisPlus 配置多数据源--转载
    nginx 配置静态网页和反向代理
    ORA-01000: maximum open cursors exceeded
    重装系统我们选择FAT还是NTFS?U盘和硬盘格式化两者选谁?
    2、条件表达式
    1、javascript 知识拓展
    1_maven 问题
  • 原文地址:https://www.cnblogs.com/gangbalei/p/10411502.html
Copyright © 2011-2022 走看看