zoukankan      html  css  js  c++  java
  • Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法
    2013年12月11日 11:50:35 iteye_751 阅读数:428
    --加密字符串
    create or replace function des3_enc
    (
    input varchar2
    )
    return varchar2
    is
    i_data varchar2(128);
    v_in varchar2(255);
    i_key varchar2(128);
    raw_input RAW(128) ;
    key_input RAW(128) ;
    decrypted_raw RAW(2048);
    begin
    --判断是否为空
    if input is null then
    return null;
    else if input='' then
    return '';
    end if;
    end if;

    --key,至少要16位
    i_key:= 'abcdef0123456789';

    --要加密信息
    i_data:= input;
    v_in := rpad(i_data,(trunc(length(i_data)/8)+1)*8,chr(0));
    --字符转成RAW
    raw_input := UTL_RAW.CAST_TO_RAW(v_in);
    key_input := UTL_RAW.CAST_TO_RAW(i_key);
    dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,key => key_input,encrypted_data => decrypted_raw);

    --加密信息转成字符
    return to_char(rawtohex(decrypted_raw));

    end des3_enc;


    --解密字符串
    create or replace function des3_dec
    (
    input varchar2
    )
    return varchar2
    is
    i_data varchar2(2048);
    i_key varchar2(2048);
    v_in varchar2(2048);
    begin
    --判断是否为空
    if input is null then
    return null;
    else if input='' then
    return '';
    end if;
    end if;

    --key,至少要16位
    i_key:= 'abcdef0123456789';

    --要解密的信息
    i_data := input;

    dbms_obfuscation_toolkit.DES3DECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(i_data),key_string => i_key,decrypted_string=> v_in);
    v_in := rtrim(v_in,chr(0));

    --返回解密信息
    return v_in;

    end des3_dec;

    --触发器,用于在增加、修改时自动加密字段,查询时需要手动调用解密函数进行解密。
    create or replace trigger enc_trigger
    before insert or update on scott.dept
    for each row
    begin
    select des3_enc(:new.dname) into :new.dname from dual;
    end enc_trigger;


    --使用示例:
    insert into dept values (50,'test','test');
    commit;
    select des3_dec(dname) from dept where deptno=50;

  • 相关阅读:
    AtCoder agc023_f
    CodeForces 1328
    洛谷 P4437
    Spark读取txt文件跳过第一行
    斯特林数学习笔记。
    hackrank subsets
    题解 CF1004F 【Sonya and Bitwise OR】
    [NOI2020]美食家
    Educational Codeforces Round 94 题解
    Delphi 与 C/C++ 数据类型对照表
  • 原文地址:https://www.cnblogs.com/buffercache/p/10209423.html
Copyright © 2011-2022 走看看