繁体   English   中英

C#令牌解析

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM