[英]C# token parsing
我想将日期和用户电子邮件组合到一个base64
字符串中,该字符串现在的工作方式如下:
public string GenerateUniqueToken(string email)
{
byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
byte[] key = Encoding.ASCII.GetBytes(email);
string encoded = Convert.ToBase64String(time.Concat(key).ToArray());
return criptographyService.Encrypt(encoded);
}
我现在想解析它,以便只从解码后的字符串中收到一封电子邮件,但我将所有内容汇总在一起:
public string TokenUserValid(string token)
{
string decrypted = criptographyService.Decrypt(token);
byte[] data = Convert.FromBase64String(decrypted);
return Encoding.Default.GetString(data);
}
我以这样的形式得到它:
\\ Hmy.email@gmail.com
如您所知,日期的长度可以与byte[]
分开读取时间和电子邮件
//combine time and email
byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
byte[] key = Encoding.ASCII.GetBytes("scottrobinson@notmyemail.com);
string encoded = Convert.ToBase64String(time.Concat(key).ToArray());
//read time and email
byte[] data = Convert.FromBase64String(encoded);
DateTime date = DateTime.FromBinary(BitConverter.ToInt64(data.Take(8).ToArray(), 0)); //read the date
string email = Encoding.Default.GetString(data.Skip(8).ToArray()); //read the email
在日期和电子邮件名称之间放置一个分隔符,例如#。 然后使用string.Split()将它们分解并放在字符串数组中。
电子邮件将在数组的索引[1]上,而日期将在索引[0]上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.