数据脱敏——隐藏字符串,中间部分用*代替 - 竹影横扫窗 - 博客园

    项目开发中,基于对用户隐私保护的考虑,需要对敏感信息进行加密显示,使用特殊字符代替字符中间字符。如手机号,身份证号,姓名等,以下为隐藏字符串的实现:

复制代码; "复制代码")

/// <summary>
/// 将传入的字符串中间部分字符替换成特殊字符.
/// </summary>
/// <param name="number">要替换的字符串</param>
/// <param name="startLen">前保留长度</param>
/// <param name="endLen">尾部保留长度</param>
/// <param name="replaceChar">替换的特殊字符</param>
/// <returns></returns>

public static string HideString(string number, int startLen, int endLen, char replaceChar = '*')

    { try { if (string.IsNullOrWhiteSpace(number))
            {
                number = string.Empty;
            } else { int length = number.Length - startLen - endLen; string replaceStr = number.Substring(startLen, length); string specialStr = string.Empty; for (int i = 0; i < replaceStr.Length; i++)
                {
                    specialStr += replaceChar;
                }

                number = number.Replace(replaceStr, specialStr);
            }
        } catch (Exception e)
        { throw;
        } return number;
    }

复制代码; "复制代码")

上述方法如果输入字符串为“11111111”或者不进行替换时,程序会出错。改进程序如下:

复制代码; "复制代码")

public static string HideString(string str, int startLen, int endLen, char replaceChar = '*')

    { if (string.IsNullOrWhiteSpace(str))
        { return string.Empty;
        } try { int length = str.Length - startLen - endLen; var startStr = str.Substring(0, startLen); var endStr = str.Substring(str.Length - endLen, endLen); var hideStr = string.Empty.PadLeft(length, replaceChar); return $"{startStr}{hideStr}{endStr}";
        } catch (Exception ex)
        {
            NLogManager.LogWarn(ex); return string.Empty;
        }
    }

复制代码; "复制代码")

隐藏手机号方式二:

复制代码; "复制代码")

public static string HidePhone(string phone)

    { if (string.IsNullOrWhiteSpace(phone))
        { return string.Empty;
        } if (phone.Length == 11)
        { return $"{phone.Substring(0, 3)}****{phone.Substring(7, 4)}";
        } int hideLength = (int)Math.Floor((double)phone.Length / 2); int displayLength = phone.Length - hideLength; int displayHalfLength = (int)Math.Floor((double)displayLength / 2); int prefixLength = displayHalfLength; int suffixLength = displayLength - prefixLength; return $"{phone.Substring(0, displayHalfLength).PadRight(prefixLength + hideLength, '*')}{phone.Substring(phone.Length - suffixLength, suffixLength)}";
    }

复制代码; "复制代码")


原网址: 访问
创建于: 2021-11-25 15:58:44
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论