mysql对身份证号进行脱敏处理 您所在的位置:网站首页 csv文件中的身份证号码不能显示 mysql对身份证号进行脱敏处理

mysql对身份证号进行脱敏处理

2024-04-07 10:29| 来源: 网络整理| 查看: 265

一、数据脱敏解释

在日常开发需求中会经常遇到数据脱敏处理,比如身份证号、手机号,需要使用*进行部分替换显示。这样能使敏感隐私信息在一定程度上得到保护。那么什么是数据脱敏呢?

在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。

二、数据脱敏实现

数据脱敏实现可以从数据库查数据的时候进行处理,可以在查出数据后进行处理。在这里记录了MySQL数据库查询时处理,通过使用mysql字符串函数实现。

三、实现

首先执行SQL语句:

1

MySQL数据脱敏实现

1. CONCAT()、LEFT()和RIGHT()字符串函数组合使用 CONCAT(str1,str2,…):返回结果为连接参数产生的字符串LEFT(str,len):返回从字符串str 开始的len 最左字符

RIGHT(str,len):从字符串str 开始,返回最右len 字符

执行SQL语句:

SELECT CONCAT(LEFT(IdentityCardNo,3), '****' ,RIGHT(IdentityCardNo,4)) AS 身份证号 FROM c_inhabitantinfo; 123

2.INSERT()

INSERT(str,pos,len,newstr):返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符

执行SQL语句:

SELECT INSERT(IdentityCardNo, 4, 11, '****') AS 身份证号 FROM c_inhabitantinfo;

四、脚本方法

DELIMITER $$CREATE  FUNCTION `f_get_rand_number`(p_size int) RETURNS int(20)    COMMENT '取参数传入长度的随机数'BEGIN -- select f_get_rand_number(4) ; -- 1699 DECLARE v_rand_number int(20);DECLARE v_multiplier int;if p_size>20 thenset p_size = 20;end if;set v_multiplier=RPAD('1',p_size,'0');SELECT ROUND(RAND() * v_multiplier + v_multiplier) INTO v_rand_number;RETURN v_rand_number;ENDDELIMITER;DELIMITERCREATE  FUNCTION `f_padding_str`(p_original varchar(200),p_index int ,p_padding_str varchar(1)) RETURNS varchar(200) CHARSET utf8    COMMENT '数据脱敏 将p_original从p_index位后替换成p_padding_str'BEGIN-- select f_padding_str('良好压顶奇才',4,'某'); -- 良好压顶某某declare v_rtn_str varchar(200);declare v_len int;if p_original is null thenreturn '';end if;if char_length(p_original)>200 thenset p_original = substring(p_original,1,200);end if;set v_len = char_length(p_original);set v_rtn_str = RPAD(substring(p_original,1,p_index),v_len,p_padding_str);RETURN v_rtn_str;ENDDELIMITER;DELIMITERCREATE  FUNCTION `f_replace_str`(p_original varchar(200),p_index int ,p_size int,p_replace_str varchar(100)) RETURNS varchar(200) CHARSET utf8    COMMENT '数据脱敏 将p_original从p_index位后p_size长度的字符串替换成p_replace_str'BEGIN-- select f_replace_str('12345678',2,3,'bbb'); -- 1bbb5678-- select f_replace_str('12345678',2,0,'bbb'); -- 1bbb    -- select f_replace_str('12345678',-2,0,'bbb');-- 123456bbb    declare v_rtn_str varchar(200);    declare v_sub_str varchar(100);    if p_original is null thenreturn '';end if;    if char_length(p_original)>200 thenset p_original = substring(p_original,1,200);end if;-- 当p_size为0时,则将p_index后所有字符替换为p_replace_str    if p_size =0 thenset v_sub_str = substring(p_original,p_index);    elseset v_sub_str = substring(p_original,p_index,p_size);    end if;    set v_rtn_str = replace(p_original,v_sub_str,p_replace_str);RETURN v_rtn_str;END$$DELIMITER ;

五、第三方产品DBMasker



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有