一个系统的安全设计总是会注重用户的隐私保护的,开发中也不乏能遇到这样的需求,将电话号码,QQ号,邮箱之类的敏感信息进行脱敏处理,呈现基本信息的同时并保护用户隐私。比如13123456789这样的手机号,通常展示为131****6789。

当然,如果只是手机号这种固定位数的实现起来也算是相当简单的,但QQ号、微信号这种长度不固定的,我们需要做一个通用的脱敏处理。

比如:

1@masuit.com这种用户名只有1位的邮箱,想要脱敏,应该是1****@http://masuit.com吧;

ldqk脱敏后应该是l****;

1234567脱敏后应该是1****67;

所以,我们应该针对不同的位数做处理,简单分析得出以下几种不同的情况:

只有1-5位的时候,补全到5位;

6-10位,替换中间4位;

11位以上,缩减到11位并替换中间4位;

替换我们可以直接使用正则表达式进行替换脱敏,我们先实现11位手机号的脱敏:

Regex.Replace(s, "(.{3}).*(.{4})", "$1****$2")

但有时候我们想使用?进行脱敏,所以打码字符应该通过参数的方式进行传递,故我们需要从外部传递脱敏符号,并根据不同情况,作相应的正则替换,封装代码如下:

        /// <summary>/// 字符串掩码/// </summary>/// <param name="s">字符串</param>/// <param name="mask">掩码符</param>/// <returns></returns>public static string Mask(this string s, char mask = '*'){if (string.IsNullOrWhiteSpace(s?.Trim())){return s;}s = s.Trim();string masks = mask.ToString().PadLeft(4, mask);return s.Length switch{_ when s.Length >= 11 => Regex.Replace(s, "(.{3}).*(.{4})", $"$1{masks}$2"),_ when s.Length == 10 => Regex.Replace(s, "(.{3}).*(.{3})", $"$1{masks}$2"),_ when s.Length == 9 => Regex.Replace(s, "(.{2}).*(.{3})", $"$1{masks}$2"),_ when s.Length == 8 => Regex.Replace(s, "(.{2}).*(.{2})", $"$1{masks}$2"),_ when s.Length == 7 => Regex.Replace(s, "(.{1}).*(.{2})", $"$1{masks}$2"),_ when s.Length == 6 => Regex.Replace(s, "(.{1}).*(.{1})", $"$1{masks}$2"),_ => Regex.Replace(s, "(.{1}).*", $"$1{masks}")};}

转自原文:

C#简单代码实现对手机号邮箱等隐私信息进行*号打码_懒得勤快的博客_互联网分享精神​masuit.com

手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码相关推荐

  1. 还愁不能解密MD5值?简单代码就能实现md5加密解密,内附源码,亲测可用

    众所周知,md5本身是不可逆的,但我们可以使用以下代码中提供的接口进行解密啊!我试了下成功率是非常的高!8位以内的纯数字的md5值都可以解密. php代码 <?php $MiWen = &quo ...

  2. java手机号判断运营商_用Java对手机号所属运营商进行判断

    [要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134.1 package com.yuni ...

  3. 使用Python对手机号进行加密,超级简单

    简单的用Python对手机号进行加密 知识点: 文件读写 基础语法 字符串处理 正则表达式 代码部分 # 导入系统包 import platform import reprint("Hell ...

  4. Java实现对手机号、身份证号、护照号脱敏

    目录 1.Java原生代码实现: 2.使用 Hutool 工具实现: 背景: 我们在项目中经常会需要用到用户的敏感信息,比如手机号.身份证号.护照号: 当数据需要在页面上进行展示的时候就需要进行脱敏, ...

  5. 机器学习简单代码示例

    机器学习简单代码示例 //在gcc-4.7.2下编译通过. //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include <iostream> u ...

  6. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  7. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

  8. 使用vb获取网页源文件并保存的简单代码

    使用vb获取网页源文件并保存的简单代码 Private Sub Command1_Click() Inet1.URL = "HTTP://www.wangjianran.com/" ...

  9. python代码大全表解释-Python中顺序表的实现简单代码分享

    顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...

最新文章

  1. 安全检测点的一些梳理——待长期整理
  2. JavaScript PopUp生成器
  3. MySQL用户权限(Host,User,Password)管理(mysql.user)
  4. svg 贝塞尔曲线图解(记录)
  5. plotting and saving over line in paraView
  6. java去除对象属性空格_JAVA 对象中去除空格
  7. PHP 生成 ppt,php在线编辑器fckedìtor应用.ppt
  8. 牛客网刷题记录(3)组合逻辑
  9. 列宽一字符等于多少厘米_Excel中行高与列宽单位和厘米的转换
  10. 一个基于场景感应的android智能手机防丢失系
  11. 实现了私聊和群聊功能的聊天工具
  12. NTT将在全球颇具影响力的技术盛会CES 2021上在线展出
  13. warning C4819 的解决方法
  14. 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码
  15. core文件处理和进程查询
  16. 动画(Animation)来回变换
  17. RAC 中GES/GCS原理
  18. 计算机作品画图板软件四年级,四年级下册信息技术《word画图工具》教学设计...
  19. 选择恐惧症应对方法——以终为始来做选择
  20. 软件测试面试题:假设有一个文本框要求输入10个字符的邮政编码,对于该文本框应该怎样划分等价类?

热门文章

  1. SAP Spartacus的产品主数据模型
  2. SAP UI5 click list item to navigate to detail page
  3. SAP CRM BCSet activation debug
  4. PPR 搜索里max hit不起作用
  5. SAP CRM Service Order search Tool
  6. [源码研究]Some debugger screenshot of Slf4jLogger creation
  7. Linux unshare命名的一些例子
  8. SAP CRM里使用BAdI阻止产品主数据保存的一种办法
  9. android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...
  10. 最长递增子序列的个数Python解法