我开发了一个应用程序,它是基于用户的应用程序。在这个应用程序如果用户忘记了他的密码,那么用户只能通过他的电子邮件ID重置他的密码,如果用户不记得他的电子邮件ID与他的帐户相关,那时我想要在社会安全号码中检索密码sha***aj@gmail.com。我怎样才能实现这一点,请帮助我解决这个问题。谢谢。
我从stak over flow获得了这个代码,但它不符合我的要求。仅限电话号码不适用于电子邮件
public static string GetMaskedEmail(string number)
{
if (String.IsNullOrEmpty(number))
return string.Empty;
if (number.Length <= 12)
return number;
string last12 = number.Substring(number.Length - 12, 12);
var maskedChars = new StringBuilder();
for (int i = 0; i < number.Length - 12; i++)
{
maskedChars.Append(number[i] == '-' ? "-" : "#");
}
return maskedChars + last12;
}
答案 0 :(得分:3)
今晚的工作有点慢,所以我解雇了Xamarin Studio并为你鞭打了这个。这不应该被视为最佳编码实践的一个例子,实际上根本不是。
虽然这将提供一个功能性的示例,您可以从中获取并构建自己的方法,并希望在此过程中学习。一个很好的参考资源,如果你在阅读任何代码时完全迷失了,那么MSDN如果你还没有访问过,我会建议这样做并加入书签以备将来使用。
using System;
namespace EmailHash
{
class MainClass
{
public static void Main (string[] args)
{
if (args.Length <= 0)
{
Console.WriteLine ("No values were passed to application.");
return;
}
string email = args[0];
int indexOfAt = email.IndexOf ("@");
if (indexOfAt == -1)
{
Console.WriteLine("Unable to find '@' symbol within email.");
return;
}
int indexStart = 3;
int indexEnd = indexOfAt - 2;
if (indexStart >= indexEnd)
{
Console.WriteLine("Not enough characters in email to mask value.");
return;
}
string hashedEmail = email.Replace(email.Substring(indexStart, indexEnd - indexStart), "***");
Console.WriteLine("Original email: " + email);
Console.WriteLine("Hashed email: " + hashedEmail);
return;
}
}
}