香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > oracle >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Oracle自定义脱敏函数的代码详解


时间:2020-11-06 14:06 作者:admin


对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码

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自定义脱敏函数的代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)