Oracle自定义脱敏函数的代码详解
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码CREATE OR REPLACE FUNCTION F_GET
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
深圳恒合互联网络科技有限公司
互联网属科技
互联网科技公司税收优惠
金诺互联网科技
互联网最新的科技有限公司
科技信息互联网
互联网科技作文
互联网科技上市公司
时间互联网络科技
华脉科技工业互联网产品
科技赋能互联网健康
苏州五指互联网络科技有限
互联网科技革命什么开始
民营互联网公司国防科技
佛山市拉法互联网科技有限公司
从那以后互联网科技有限公司
江苏互联网智能科技产品出厂价
互联网科技博主张洲
上海旺乐尼互联网科技有限公司
互联网科技自媒体灵感
互联网科技网
互联网科技金融
远拓互联网科技
宁夏科技产业互联网案例
厦门千工互联网科技有限公司
想开互联网科技公司怎么样
科技类公司包括互联网吗
互联网数据科技专业
优雇互联网科技有限公司
现代科技的标志之一的互联网