1. 首页
  2. 文章列表
  3. C#简单代码实现对手机号邮箱等隐私信息进行*号打码

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

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

比如:

[email protected]这种用户名只有1位的邮箱,想要脱敏,应该是1****@masuit.com吧;

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

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

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

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

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

懒得勤快的博客_互联网分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.tk|ldqk.tk

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

懒得勤快的博客_互联网分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.tk|ldqk.tk

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

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

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

懒得勤快的博客_互联网分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.tk|ldqk.tk
        /// <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
            {
                >= 11 => Regex.Replace(s, "(.{3}).*(.{4})", $"$1{masks}$2"),
                10 => Regex.Replace(s, "(.{3}).*(.{3})", $"$1{masks}$2"),
                9 => Regex.Replace(s, "(.{2}).*(.{3})", $"$1{masks}$2"),
                8 => Regex.Replace(s, "(.{2}).*(.{2})", $"$1{masks}$2"),
                7 => Regex.Replace(s, "(.{1}).*(.{2})", $"$1{masks}$2"),
                6 => Regex.Replace(s, "(.{1}).*(.{1})", $"$1{masks}$2"),
                _ => Regex.Replace(s, "(.{1}).*", $"$1{masks}")
            };
        }



如果你喜欢这篇文章,欢迎点赞、评论、分享本文!

文章历史版本:

修改次数:2 次 查看历史版本

相关推荐:

下载神器——InternetDownloadManager(IDM) 6.39.3简体中文学习版 Windows+Office激活工具——AAct v4.2.4/ AAct Network 1.2.1 汉化版
官方正版特价!Internet Download Manager IDM 下载神器 RedGate全家桶SQL ToolBelt 3.1/.NET Reflector 11.1/SQL Prompt 10.7.2学习版下载
全面的C#编码规范整理 博主开源项目——本站博客项目MyBlogs.Core,基于.NET 5
.NET数据库建模神器——LinqConnect 4.9.2119/EntityDeveloper 6.11.1297 Professional完美学习版 本站千星开源项目——.NET万能框架:Masuit.Tools_2.4.4.7版本发布
JetBrains 2021.1.2 全系列产品激活工具2021-4-17 .NET控件库——Telerik 2021R3全家桶学习版

版权声明:

本文仅用于学习、研究和交流目的,欢迎非商业性质转载。本文链接:https://masuit.com/1790

● 下载遇到问题,请先阅读网站公告!如遇资源报毒,请参阅:https://ldqk.org/misc/14

● 文章内容仅供参考,所涉及的软件以具体使用情况为准!

● 博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。

● 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。

● 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!

● 文章内容部分来源于互联网,本站不代表任何立场;涉及到的软件来源于互联网,仅供个人学习参考,请勿用于商业用途,版权归软件开发者所有,下载后请务必于24小时内删除,请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!如果你是版权方,认为本文内容对您的权益有所侵犯,请联系本站管理员,并参照侵删联系的说明提交相应的证明材料,本站将进行严格地资质审查和背景调查后,情况属实的将在三天内对本文删除或修正。本站对互联网版权绝对支持!

● 本站一贯非常高度重视知识产权保护并遵守各项知识产权法律、法规和具有约束力的规范性文件。重视正版,打击盗版。根据法律、法规和规范性文件要求,本站旨在保护权利人的合法权益的措施和步骤,当权利人发现在本站生成的链接所指向的第三方网页的内容侵犯其合法权益时,权利人应事先向本站发出"权利通知",本站将根据当地法律法规和政府规范性文件采取措施移除相关内容或链接。 

● 访问本站的用户必须明白,本站对提供下载的第三方软件不拥有任何权利,其版权归该资源的合法拥有者所有。

● 本站保证站内提供的所有可下载资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。不论何种情形我们都不对任何由于使用或无法使用本站提供的信息所造成的直接的、间接的、附带的、特殊的或余波所及的损失、灵失、债务或中断负任何责任﹝不论是可预见或是不可预见的,即使我们巳被告知这种可能性﹞。

评论区:

验证码:
    验证码: