美文网首页
oracle部分字段加密解密 实现模糊搜索

oracle部分字段加密解密 实现模糊搜索

作者: 浪漫宇宙与人间日常 | 来源:发表于2018-09-30 11:24 被阅读0次

    数据库部分字段加密 实现该字段模糊查询

    解决方案:从数据库层面 对改字段进行解密 是目前最为方便的 而oracle可以支持将java类带入到oracle从而调用对应的方法。

    基本步骤:

    1. 编写好对应的加密解密类,方法为静态方法static修饰。
    2. 将其打包为jar包
    3. oracle数据库导入
    4. 编写对应的函数function或者存储过程procedure[不需要返回值的就写存储过程]
    5. 在sql里面调用

    1. 编写加密解密类

    image.png

    此处需要特别注意oracle里面调用的方法必须为静态方法

    2. 打包jar包

    image.png

    3. 导入oracle数据库

    命令如下 :

    loadjava -r -f -verbose -resolve -user scott/tiger@orcl  des-1.0-SNAPSHOT.jar
    

    然后正常你就会看到:


    image.png

    需要特别注意oracle的用户名和密码已经对应的实例

    4. 编写function

    当然你需要查看下是不是导入成功了

    命令如下:在sql里面执行

    select * from user_java_classes;

    image.png

    接着,你就可以编写function了

    --加密
    create or replace function sven_encrypt(str varchar2,key varchar2)  return varchar2  as 
    LANGUAGE JAVA NAME  'com/epoint/utility/code/DES.encrypt(java.lang.String,java.lang.String) return java.lang.String'; 
    --解密
    create or replace function sven_decrypt(str varchar2,key varchar2)  return varchar2  as 
    LANGUAGE JAVA NAME  'com/epoint/utility/code/DES.decrypt(java.lang.String,java.lang.String) return java.lang.String'; 
    

    然后你可以查询下,是否写入成功:select * from user_objects where object_type = 'FUNCTION';

    5. sql里面掉调用方法

    -- dept表 三个字段 deptno dname loc
    --一些测试数据,加密当然可以选择在后台java代码执行
    insert into dept values(70,sven_encrypt('测试部','svensven'),'kkk');
    
    insert into dept values(80,sven_encrypt('技术部','svensven'),'kkk');
    
    insert into dept values(90,sven_encrypt('咨询部','svensven'),'kkk');
    
    insert into dept values(1000,sven_encrypt('开发部','svensven'),'kkk');
    
    insert into dept values(110,sven_encrypt('实施部','svensven'),'kkk');
    
    --解密模糊查询
    
    select d.*, sven_decrypt(d.testname,'svensven') from dept d where sven_decrypt(d.testname,'svensven') like '%部%';
    
    
    image.png image.png

    相关文章

      网友评论

          本文标题:oracle部分字段加密解密 实现模糊搜索

          本文链接:https://www.haomeiwen.com/subject/tsaioftx.html