我在c#中创建了一个方法,它将唯一的电子邮件作为输入并返回base64字符串。我正在使用MD5CryptoServiceProvider来实现此目的。这是代码:
public string GenerateHash(string str)
{
str = str.ToUpperInvariant();
MD5 md5 = new MD5CryptoServiceProvider();
byte[] emailBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
var base64Email = Convert.ToBase64String(emailBytes, 0, emailBytes.Length);
return RemoveSpecialCharacters(base64Email);
}
private static string RemoveSpecialCharacters(string str)
{
return Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled);
}
但问题是它返回一个带有特殊字符的字符串(例如/,==),我必须自己使用正则表达式或其他东西删除这些特殊字符但是无论如何我得到一个没有特殊字符的唯一字符串所以我不必自己使用正则表达式。也有可能我得到一个不超过12个字符的字符串