首页 > 代码库 > 隐藏手机号、邮箱等敏感信息
隐藏手机号、邮箱等敏感信息
隐藏手机号、邮箱等敏感信息
Intro
做项目的时候,页面上有一些敏感信息,需要用“*”隐藏一些比较重要的信息,于是打算写一个通用的方法。
Let‘s do it !
Method 1:指定左右字符数量
Method 1.1 中间的*的个数和实际长度有关
1 /// <summary> 2 /// 隐藏敏感信息 3 /// </summary> 4 /// <param name="info">信息实体</param> 5 /// <param name="left">左边保留的字符数</param> 6 /// <param name="right">右边保留的字符数</param> 7 /// <param name="basedOnLeft">当长度异常时,是否显示左边 8 /// <code>true</code>显示左边,<code>false</code>显示右边 9 /// </param>10 /// <returns></returns>11 public static string HideSensitiveInfo(string info, int left, int right, bool basedOnLeft=true)12 {13 if (String.IsNullOrEmpty(info))14 {15 return "";16 }17 StringBuilder sbText = new StringBuilder();18 int hiddenCharCount = info.Length - left - right;19 if (hiddenCharCount > 0)20 {21 string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right);22 sbText.Append(prefix);23 for (int i = 0; i < hiddenCharCount; i++)24 {25 sbText.Append("*");26 }27 sbText.Append(suffix);28 }29 else30 {31 if (basedOnLeft)32 {33 if (info.Length > left && left > 0)34 {35 sbText.Append(info.Substring(0, left) + "****");36 }37 else38 {39 sbText.Append(info.Substring(0, 1) + "****");40 }41 }42 else43 {44 if (info.Length > right && right > 0)45 {46 sbText.Append("****" + info.Substring(info.Length - right));47 }48 else49 {50 sbText.Append("****" + info.Substring(info.Length - 1));51 }52 }53 }54 return sbText.ToString();55 }
Method 1.2 : 中间的*的个数固定
1 /// <summary> 2 /// 隐藏敏感信息 3 /// </summary> 4 /// <param name="info">信息实体</param> 5 /// <param name="left">左边保留的字符数</param> 6 /// <param name="right">右边保留的字符数</param> 7 /// <param name="basedOnLeft">当长度异常时,是否显示左边 8 /// <code>true</code>显示左边,<code>false</code>显示右边 9 /// <returns></returns>10 public static string HideSensitiveInfo1(string info, int left, int right, bool basedOnLeft = true)11 {12 if (String.IsNullOrEmpty(info))13 {14 return "";15 }16 StringBuilder sbText = new StringBuilder();17 int hiddenCharCount = info.Length - left - right;18 if (hiddenCharCount > 0)19 {20 string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right);21 sbText.Append(prefix);22 sbText.Append("****");23 sbText.Append(suffix);24 }25 else26 {27 if (basedOnLeft)28 {29 if (info.Length > left && left >0)30 {31 sbText.Append(info.Substring(0, left) + "****");32 }33 else34 {35 sbText.Append(info.Substring(0, 1) + "****");36 }37 }38 else39 {40 if (info.Length > right && right>0)41 {42 sbText.Append("****" + info.Substring(info.Length - right));43 }44 else45 {46 sbText.Append("****" + info.Substring(info.Length - 1));47 }48 }49 }50 return sbText.ToString();51 }
Method 2 : “*”数量一定,设置为4个,按信息总长度的比例来取,默认左右各取1/3
1 /// <summary> 2 /// 隐藏敏感信息 3 /// </summary> 4 /// <param name="info">信息</param> 5 /// <param name="sublen">信息总长与左子串(或右子串)的比例</param> 6 /// <param name="basedOnLeft">当长度异常时,是否显示左边,默认true,默认显示左边 7 /// <code>true</code>显示左边,<code>false</code>显示右边 8 /// <returns></returns> 9 public static string HideSensitiveInfo(string info,int sublen = 3,bool basedOnLeft = true)10 {11 if (String.IsNullOrEmpty(info))12 {13 return "";14 }15 if (sublen<=1)16 {17 sublen = 3;18 }19 int subLength = info.Length / sublen;20 if (subLength > 0 && info.Length > (subLength*2) )21 {22 string prefix = info.Substring(0, subLength), suffix = info.Substring(info.Length - subLength);23 return prefix + "****" + suffix;24 }25 else26 {27 if (basedOnLeft)28 {29 string prefix = subLength > 0 ? info.Substring(0, subLength) : info.Substring(0, 1);30 return prefix + "****";31 }32 else33 {34 string suffix = subLength > 0 ? info.Substring(info.Length-subLength) : info.Substring(info.Length-1);35 return "****"+suffix;36 }37 }38 }
扩展
手机号 1
1 /// <summary> 2 /// 隐藏手机号详情 3 /// </summary> 4 /// <param name="phone">手机号</param> 5 /// <param name="left">左边保留字符数</param> 6 /// <param name="right">右边保留字符数</param> 7 /// <returns></returns> 8 public static string HideTelDetails(string phone, int left = 3, int right = 4) 9 {10 return HideSensitiveInfo(phone, left, right);11 }
测试结果如下:
手机号 2
1 /// <summary> 2 /// 隐藏手机号详情 3 /// </summary> 4 /// <param name="phone">手机号</param> 5 /// <param name="left">左边保留字符数</param> 6 /// <param name="right">右边保留字符数</param> 7 /// <returns></returns> 8 public static string HideTelDetails(string phone, int left = 3, int right = 4) 9 {10 return HideSensitiveInfo1(phone, left, right);11 }
测试结果如下:
邮件地址
1 /// <summary> 2 /// 隐藏右键详情 3 /// </summary> 4 /// <param name="email">邮件地址</param> 5 /// <param name="left">邮件头保留字符个数,默认值设置为3</param> 6 /// <returns></returns> 7 public static string HideEmailDetails(string email, int left = 3) 8 { 9 if (String.IsNullOrEmpty(email))10 {11 return "";12 }13 if (System.Text.RegularExpressions.Regex.IsMatch(email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))//如果是邮件地址14 {15 int suffixLen =email.Length - email.LastIndexOf(‘@‘);16 return HideSensitiveInfo(email, left, suffixLen,false);17 }18 else19 {20 return HideSensitiveInfo(email);21 }22 }
测试结果如下:
隐藏手机号、邮箱等敏感信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。