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

C#で電話番号、メールアドレスなどの機密情報を隠す実現方法

プロジェクトを進める際、ページには敏感な情報があり、「*重要な情報を一部隠したいので、一般的なメソッドを書くことにしました。

それをしましょう!

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>左側を表示、<code>false</code>/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)
{
 + "****");
}
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>左側を表示、<code>false</code>/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)
{
 + "****");
}
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>左側を表示、<code>false</code>/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(メールを送信する際、#を@に置き換えてください。告発を行う場合は、関連する証拠を提供し、確認がとれた場合、本サイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ