专业编程基础技术教程

网站首页 > 基础教程 正文

php数据脱敏处理(身份证,手机号等)

ccvgpt 2024-10-12 13:31:29 基础教程 7 ℃

一、什么是数据脱敏?


数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。 百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。

php数据脱敏处理(身份证,手机号等)

生活中不乏数据脱敏的例子,比如我们最常见的火车票(有*号的地方)、电商收货人地址都会对敏感信息做处理。

二、为什么要进行数据脱敏?


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

三、如何实现


以下是用php写的脱敏函数


/**
 * 数据脱敏函数
 * @param $string 需要脱敏值
 * @param int $start 开始
 * @param int $length 结束
 * @param string $re 脱敏替代符号
 * @return bool|string
 * 例子:
 * dataDesensitization('13126989876', 3, 4); //131****9876
 * dataDesensitization('张三四', 0, -1); //**四
 */
function dataDesensitization($string, $start = 0, $length = 0, $re = '*')
{
 if (empty($string)){
 return false;
 }
 $strarr = array();
 $mb_strlen = mb_strlen($string);
 while ($mb_strlen) {//循环把字符串变为数组
 $strarr[] = mb_substr($string, 0, 1, 'utf8');
 $string = mb_substr($string, 1, $mb_strlen, 'utf8');
 $mb_strlen = mb_strlen($string);
 }
 $strlen = count($strarr);
 $begin = $start >= 0 ? $start : ($strlen - abs($start));
 $end = $last = $strlen - 1;
 if ($length > 0) {
 $end = $begin + $length - 1;
 } elseif ($length < 0) {
 $end -= abs($length);
 }
 for ($i = $begin; $i <= $end; $i++) {
 $strarr[$i] = $re;
 }
 if ($begin >= $end || $begin >= $last || $end > $last) return false;
 return implode('', $strarr);
}

Tags:

最近发表
标签列表