当前位置: 首页 > news >正文

对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏

一、姓名脱敏

1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。

显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。

① 举例

 张*        王**        A****

② 实现方法

 hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, (...args) => {let tempStr = '';if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length + 1,}).join('*');}return args[1] + tempStr;});
}

③ demo

console.log(hideName('小草莓')) // 小**console.log(utils.hideName('Alice')) // A****

 

2、脱敏规则二:显示姓名中的第一个和最后一个字,其它用*号代替。

显示姓名中的第一个和最后一个字,如为英文等其他语种,也是显示第一个和最后一个字母。其它用*号代替。

① 举例

*三       王*蛋        A****e

② 实现方法

 hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, function (...args) {let tempStr = ''if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length}).join('*')}let res = name.length === 2 ? ('*' + name.slice(-1)) : (args[1] + tempStr + name.slice(-1))return res})
}

③ demo

console.log(hideName('张三')) // *三console.log(hideName('小草莓')) // 小*莓console.log(utils.hideName('Alice')) // A***e

二、证件号码脱敏

1、对固定位数进行脱敏

显示前2位和后2位,其它用*号代替。

① 举例

32**************1X

② 实现方法

// keepWord是要传入的不脱敏的位数
hideIdCard(idCard, keepWord) {if (!idCard) {return idCard}let digits = keepWord ? keepWord : 2,reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},

③ demo

console.log(hideIdCard('H01234567')) // H0*****67console.log(hideIdCard('FRA123456789107')) // FR***********07console.log(hideIdCard('440582202305254223')) // 44**************23

2、特定规则脱敏

显示前1/3和后1/3段,其他用*号代替

① 举例

H01***567

② 实现方法

  hideIdCard(idCard) {if (!idCard) {return idCard}let digits = parseInt(idCard.length/3)let reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},

③ demo

console.log(hideIdCard('H01234567')) // H01***567console.log(hideIdCard('FRA123456789107')) // FRA12*****89107console.log(hideIdCard('440582202305254223')) // 440582******254223

三、手机号码脱敏

显示前3位+****+后4位。

① 举例

137****9050

② 实现方法

  hidePhone(phone) {let reg = /(\d{3})\d*(\d{4})/return phone ? phone.replace(reg, '$1****$2') : ''}

③ demo

console.log(hideName('18812345678')) // 188****5678

 四、银行卡卡号脱敏

显示前3位+ *(实际位数)+后4位

① 举例

622*********1496

② 实现方法

  hideBankAccount(bankAccount) {let reg = /(\d{3})(\d+)(\d{4})/var strLength = bankAccount.match(reg)[2].length;let strValue = ''for(let i = 0; i < strLength; i++) {strValue+='*'}return bankAccount.replace(reg,  "$1" + strValue + "$3")}

③ demo

console.log(utils.hideBankAccount('62177777555555553654')) // 621*************3654

 

http://www.lryc.cn/news/89134.html

相关文章:

  • 创建型——单例模式C++实现
  • 【华为OD统一考试B卷 | 100分】执行时长(C++ Java JavaScript Python)
  • 操作系统原理 —— 内存管理的概念(十八)
  • GPT-4国内怎么用
  • 搭建LightPicture开源免费图床系统「公网远程控制」
  • shell编程lesson06
  • 国内免费可用的ChatGPT网页版
  • 用同样的关键词测试不同的人工智能
  • shell变量类型含义 长方形面积计算 截取相应字段方法
  • Java:从单线程计数器到多线程数据同步synchronized和原子类Atomic
  • 提前进入行业顶尖阵营:高性能计算实习的竞争优势
  • Java程序设计入门教程--标识符和关键字
  • 国产IC芯片自动化测试系统ATECLOUD,助力芯片测试自动化
  • BeanFactory和ApplicationContext有什么区别?
  • js的BOM对象中的window、location使用
  • DAY 68 redis高可用的主从复制、哨兵、cluster集群
  • leetcode 1209 学会删除字符串
  • JavaScript6
  • 轻松安装Redis:不用担心配置问题
  • ChatGPT学习研究总结
  • SpringBoot枚举入参实战
  • Ansible介绍
  • GPT-4的免费使用方法分享
  • 一个产品的诞生
  • MQTT与传统的HTTP协议对比,优势在哪里呢?
  • 热榜!阿里出品2023版Java架构师面试指南,涵盖Java所有核心技能
  • 【小程序】封装时间选择组件:用单元格van-cell和插槽slot,包括起始时间和终止时间
  • 华为OD机试真题B卷 Java 实现【猜密码】
  • 沉淀-MYSQL
  • OJ练习第116题——二进制矩阵中的最短路径(BFS)