English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C#에서 전화번호, 이메일 등 민감한 정보를 숨기는 구현 방법

Intro

프로젝트를 할 때, 페이지에 몇 가지 감정 정보가 있으며 "를 사용하여 숨겨야 합니다*중요한 정보를 숨기려고 해서 일반적인 메서드를 작성하려고 합니다.

Let's do it !

Method 1: 왼쪽과 오른쪽 문자 수를 지정

Method 1.1 중간의*의 개수와 실제 길이가 관련이 있습니다

/// <summary>
/// 감추어진 감정 정보
/// </summary>
/// <param name="info">정보 실체</param>
/// <param name="left">왼쪽에 유지할 문자 수</param>
/// <param name="right">오른쪽에 유지할 문자 수</param>
/// <param name="basedOnLeft">길이가 이상적이지 않을 때, 왼쪽을 표시할지 여부 
/// <code>true</code>왼쪽 표시, <code>false</code>右边 표시
/// </param>
/// <returns></returns>
public static string HideSensitiveInfo(string info, int left, int right, bool basedOnLeft=true)
{
if (String.IsNullOrEmpty(info))
{
return "";
}
StringBuilder sbText = new StringBuilder();
int hiddenCharCount = info.Length - left - right;
if (hiddenCharCount > 0)
{
string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right);
sbText.Append(prefix);
for (int i = 0; i < hiddenCharCount; i++)
{
sbText.Append("*");
}
sbText.Append(suffix);
}
else
{
if (basedOnLeft)
{
if (info.Length > left && left > 0)
{
sbText.Append(info.Substring(0, left) + "****");
}
else
{
sbText.Append(info.Substring(0, 1) + "****");
}
}
else
{
if (info.Length > right && right > 0)
{
sbText.Append("****" + info.Substring(info.Length - right));
}
else
{
sbText.Append("****" + info.Substring(info.Length - 1));
}
}
}
return sbText.ToString();
}

Method 1.2 : 중앙의*의 갯수가 고정됨

/// <summary>
/// 감추어진 감정 정보
/// </summary>
/// <param name="info">정보 실체</param>
/// <param name="left">왼쪽에 유지할 문자 수</param>
/// <param name="right">오른쪽에 유지할 문자 수</param>
/// <param name="basedOnLeft">길이가 이상적이지 않을 때, 왼쪽을 표시할지 여부 
/// <code>true</code>왼쪽 표시, <code>false</code>右边 표시
/// <returns></returns>
public static string HideSensitiveInfo1(string info, int left, int right, bool basedOnLeft = true)
{
if (String.IsNullOrEmpty(info))
{
return "";
}
StringBuilder sbText = new StringBuilder();
int hiddenCharCount = info.Length - left - right;
if (hiddenCharCount > 0)
{
string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right);
sbText.Append(prefix);
sbText.Append("****");
sbText.Append(suffix);
}
else
{
if (basedOnLeft)
{
if (info.Length > left && left >0)
{
sbText.Append(info.Substring(0, left) + "****");
}
else
{
sbText.Append(info.Substring(0, 1) + "****");
}
}
else
{
if (info.Length > right && right>0)
{
sbText.Append("****" + info.Substring(info.Length - right));
}
else
{
sbText.Append("****" + info.Substring(info.Length - 1));
}
}
}
return sbText.ToString();
}

Method 2 : “*”갯수가 일정하면, 설정됨4개, 정보 총 길이의 비율에 따라 선택됨, 기본적으로 왼쪽과 오른쪽 각각1/3

/// <summary>
/// 감추어진 감정 정보
/// </summary>
/// <param name="info">정보</param>
/// <param name="sublen">정보 총 길이와 왼쪽 서브 문자열(또는 오른쪽 서브 문자열)의 비율</param>
/// <param name="basedOnLeft">길이가 이상하면 왼쪽을 표시할지 여부, 기본적으로 true, 기본적으로 왼쪽 표시}}
/// <code>true</code>왼쪽 표시, <code>false</code>右边 표시
/// <returns></returns>
public static string HideSensitiveInfo(string info,int sublen = 3,bool basedOnLeft = true)
{
if (String.IsNullOrEmpty(info))
{
return "";
}
if (sublen<=1)
{
sublen = 3;
}
int subLength = info.Length / sublen;
if (subLength > 0 && info.Length > (subLength*2) )
{
string prefix = info.Substring(0, subLength), suffix = info.Substring(info.Length - subLength);
return prefix + "****" + suffix;
}
else
{
if (basedOnLeft)
{
string prefix = subLength > 0 &63; info.Substring(0, subLength) : info.Substring(0, 1);
return prefix + "****";
}
else
{
string suffix = subLength > 0 &63; info.Substring(info.Length-subLength) : info.Substring(info.Length-1);
return "****"+suffix;
}
}
}

확장

휴대폰 번호 1

/// <summary>
/// 휴대폰 번호 숨기기
/// </summary>
/// <param name="phone">휴대폰 번호</param>
/// <param name="left">左边保留字符数</param>
/// <param name="right">右边保留字符数</param>
/// <returns></returns>
public static string HideTelDetails(string phone, int left = 3, int right = 4)
{
return HideSensitiveInfo(phone, left, right);
}

테스트 결과는 다음과 같습니다:

휴대폰 번호 2

/// <summary>
/// 휴대폰 번호 숨기기
/// </summary>
/// <param name="phone">휴대폰 번호</param>
/// <param name="left">左边保留字符数</param>
/// <param name="right">右边保留字符数</param>
/// <returns></returns>
public static string HideTelDetails(string phone, int left = 3, int right = 4)
{
return HideSensitiveInfo1(phone, left, right);
}

테스트 결과는 다음과 같습니다:

이메일 주소

/// <summary>
/// 우측 클릭 상세 정보를 숨기기
/// </summary>
/// <param name="email">이메일 주소</param>
/// <param name="left">이메일 헤더가 유지되는 문자 수, 기본 값은 설정됩니다3</param>
/// <returns></returns>
public static string HideEmailDetails(string email, int left = 3)
{
if (String.IsNullOrEmpty(email))
{
return "";
}
if (System.Text.RegularExpressions.Regex.IsMatch(email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))//이메일 주소가 아니면
{
int suffixLen =email.Length - email.LastIndexOf('@');
return HideSensitiveInfo(email, left, suffixLen,false);
}
else
{
return HideSensitiveInfo(email);
}
}

테스트 결과는 다음과 같습니다:

위에서 소개한 C#이 익명으로 전화번호, 이메일 등 민감한 정보를 숨기는 방법은 여러분께 도움이 되길 바랍니다. 여러분이 어떤 질문이나 의문이 있으면, 댓글을 남겨 주시면, 편집자가 즉시 답변을 드리겠습니다. 또한,呐喊 튜토리얼 사이트에 대한 여러분의 지지에 깊이 감사드립니다!

언급: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두 소유합니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있으면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(보고할 때는 #을 @으로 변경하십시오.)를 통해 신고하시고 관련 증거를 제공하시면, 사실이 확인되면 이 사이트는 즉시 저작권 침해 내용을 삭제할 것입니다.