Oracle自定义脱敏函数的代码详解
短信预约 -IT技能 免费直播动态提醒
对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码
CREATE OR REPLACE FUNCTION F_GET_SENSITIVE(IN_STR VARCHAR, IN_TYPE NUMBER)
RETURN VARCHAR2 IS
V_STR_LENGTH NUMBER;
V_NAME VARCHAR2(1000);
V_N NUMBER;
V_HID VARCHAR2(200);
V_SQL VARCHAR2(200);
V_NUM_FLAG NUMBER;
BEGIN
V_STR_LENGTH := LENGTH(IN_STR);
V_N := 0;
IF V_STR_LENGTH=0 THEN
RETURN(NULL);
END IF;
IF IN_TYPE = 1 OR IN_TYPE=11 THEN
IF V_STR_LENGTH = 2 OR V_STR_LENGTH = 3 THEN
V_NAME := REGEXP_REPLACE(IN_STR, '(.)', '*', 2, 1);
ELSIF V_STR_LENGTH < 2 THEN
V_NAME :=IN_STR;
ELSE
WHILE V_N < V_STR_LENGTH / 2 LOOP
V_N := V_N + 1;
V_HID := V_HID || '*';
END LOOP;
V_NAME := SUBSTR(IN_STR, 0, V_STR_LENGTH / 2) || V_HID;
END IF;
RETURN(V_NAME);
END IF;
IF IN_TYPE = 2 THEN
IF V_STR_LENGTH = 15 THEN
V_NAME := SUBSTR(IN_STR, 0, 6) || '******' || SUBSTR(IN_STR, -3, 3);
ELSIF V_STR_LENGTH = 18 THEN
V_NAME := SUBSTR(IN_STR, 0, 6) || '********' || SUBSTR(IN_STR, -4, 4);
ELSE
WHILE V_N < V_STR_LENGTH / 3 LOOP
V_N := V_N + 1;
V_HID := V_HID || '*';
END LOOP;
V_NAME := SUBSTR(IN_STR, 0, V_STR_LENGTH / 3) || V_HID ||
SUBSTR(IN_STR, -V_STR_LENGTH / 3, V_STR_LENGTH / 3);
END IF;
RETURN(V_NAME);
END IF;
IF IN_TYPE = 3 THEN
IF V_STR_LENGTH > 15 THEN
V_NAME := SUBSTR(IN_STR, 0, 4) || '********' || SUBSTR(IN_STR, -4, 4);
ELSE
V_NAME :=IN_STR;
END IF;
RETURN(V_NAME);
END IF;
IF IN_TYPE = 4 THEN
V_NAME := SUBSTR(IN_STR, 0, V_STR_LENGTH - 4) || '****';
RETURN(V_NAME);
END IF;
IF IN_TYPE = 5 THEN
V_SQL := 'SELECT COUNT(1) FROM DUAL WHERE LENGTH(''' || IN_STR ||
''') = LENGTH(REGEXP_REPLACE(''' || IN_STR || ''', ''[^0-9]''))';
EXECUTE IMMEDIATE V_SQL
INTO V_NUM_FLAG;
IF V_NUM_FLAG = 1 AND (V_STR_LENGTH = 7 OR V_STR_LENGTH = 8) THEN
V_NAME := SUBSTR(IN_STR, 0, 2) || '****' || SUBSTR(IN_STR, -2, 2);
ELSIF V_NUM_FLAG = 1 AND V_STR_LENGTH = 11 THEN
V_NAME := SUBSTR(IN_STR, 0, 3) || '*****' || SUBSTR(IN_STR, -3, 3);
ELSE
V_NAME := IN_STR;
END IF;
RETURN(V_NAME);
END IF;
RETURN(IN_STR);
EXCEPTION
WHEN OTHERS THEN
-- DBMS_OUTPUT.PUT_LINE('1'||V_SQL);
V_NAME := '-1';
RETURN V_NAME;
END F_GET_SENSITIVE;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Oracle自定义脱敏函数的代码详解
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
2024-04-02
2024-04-02
SpringBoot使用自定义注解实现数据脱敏过程详细解析
这篇文章主要介绍了SpringBoot自定义注解之脱敏注解详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-15
SpringBoot自定义注解之脱敏注解的示例分析
这篇文章将为大家详细讲解有关SpringBoot自定义注解之脱敏注解的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自定义注解之脱敏注解数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏
2023-06-22
2024-04-02
2024-04-02
Android自定义View构造函数详解
初始Custom View的构造函数
之前写过一篇实现圆形进度条的博客(自定义圆形进度条),通常我们在实现Custom View的时候,都会先继承View并实现View的三个构造函数,例如:import android.content.Co
2022-06-06
自定义golang函数实现的代码生成和自动化
在 go 中,可通过创建自定义函数来实现代码生成和自动化。代码生成函数接收参数列表,返回生成的代码和一个 error。自动化函数使用格式化的输出自动执行任务,接收参数列表并返回一个 error。实战案例包括一个函数,该函数可以根据参数生成配
2024-04-27
2024-04-02
Android 自定义gradle property详解及实例代码
Android 自定义gradle property
在Android studio上运行项目,gradle的配置是必不可少的,但是随着项目的逐渐成长,迎面而来的就是.各种依赖包的添加,数不胜数的签名,渠道包等,整个gradle变得很乱,这
2022-06-06
Android 自定义控件详解及实例代码
开发自定义控件的步骤:1、了解View的工作原理
2、 编写继承自View的子类
3、 为自定义View类增加属性
4、 绘制控件
5、 响应用户消息
6 、自定义回调函数 一、View结构原理Android系统的视图结构的设计也
2022-06-06
PHP 函数自定义函数:创建灵活且可扩展的代码
php 自定义函数通过 function 关键字创建,可提升代码模块化和可重用性:创建方法: 使用 function 关键字、函数名称和参数创建函数。调用方法: 输入函数名称并传递参数即可调用函数。实战案例: 使用自定义函数计算指定范围内的
2024-04-12
2024-04-02
Presto自定义函数@SqlNullable引发问题详解
这篇文章主要为大家介绍了Presto自定义函数@SqlNullable引发问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-08
如何将自定义函数集成到PHP代码中?
在 php 中,您可以通过三个步骤集成自定义函数:创建函数加载函数调用函数这可通过以下方式应用于实际案例:创建一个计算矩形面积的自定义函数在代码中加载该函数调用函数多次以计算不同矩形的面积如何将自定义函数集成到 PHP 代码中?在 PHP
2024-04-18
微信小程序自定义组件Component的代码详解
这篇文章主要给大家介绍了关于微信小程序自定义组件Component的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-03-02
2024-04-02
PHP 自定义函数的调试:深入探查代码执行
自定义函数调试技巧:var_dump() 输出:手动打印变量值以检查状态。xdebug:使用 xdebug 扩展逐步执行代码并查看堆栈跟踪。phpdbg:使用 phpdbg 调试器设置断点、查看变量和修改代码。PHP 自定义函数的调试:深入
2024-05-11
2024-04-02
使用自定义golang函数实现进行代码重构
通过使用自定义函数,代码重构可以在 go 中实现。这些函数允许我们定义特定功能并多次重复使用它们。自定义函数提高了可读性、减少了重复,并提高了可维护性和模块性。使用自定义 Go 函数实现代码重构简介代码重构是一种改进代码结构并使其更易于
2024-04-27