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

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

解决方案:从数据库层面 对改字段进行解密 是目前最为方便的 而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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容