Oracle自定义脱敏函数的代码详解
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码CREATE OR REPLACE FUNCTION F_GET
千家信息网最后更新 2025年11月09日Oracle自定义脱敏函数的代码详解
对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码
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; /**** N_TYPE 脱敏字段类型 1 :名称 11:地址 2 :证件 3 :银行账号 4 :联系电话 5 :接入号码 ***/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;总结
以上所述是小编给大家介绍的Oracle自定义脱敏函数的代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
脱敏
规则
地址
证件
代码
函数
信息
号码
名称
字段
用户
电话
联系电话
帮助
接入
联系
安全
出处
姓名
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库数据源哪个是文本文件
网络安全视频如何下载
数据库能判断经纬度落在网格内么
我的世界街霸服务器
小型数据库使用规范
企业网络安全是什么
网络安全防护华为
公司服务器会设置监控吗
网络安全法立法首要目的是
网络安全法的主题
西安百灵鸟网络技术有限公司
雷云 从云服务器同步设置
软件开发内部运营管理
mac管理ftp服务器
ab是什么职位 软件开发
对数据库表
为什么云服务器安全
服务器未运行反作弊系统
昆山软件开发的企业
万方数据库怎么看电话
天津耀成网络技术合伙企业
巴彦县网络安全应急演练的通知
怎样导出核磁软件的数据库
慧时网络技术
比多网络技术服务有限公司
杭钢冶金科技大厦互联网公司
网络安全招聘待遇
数据库查询语句错误
青年关注网络安全宣传
物业管理软件开发思路