【发布时间】:2014-01-08 01:15:07
【问题描述】:
几天前,我阅读了一篇很好的指南,内容是关于在服务器端生成令牌,以便在令牌中获取令牌的创建时间,以及 "Guid.NewGuid()" 的加密。
但是,我尝试将结果调整为在令牌中包含用户的用户名,而不是日期时间。我很接近,但我无法提取用户名本身,我只能在它后面加上一些随机字母。
识别后生成令牌的 ASP.NET 通用处理程序代码
ASCIIEncoding encoder = new ASCIIEncoding();
if(postType == "identify")
{
byte[] binName = encoder.GetBytes(name);
byte[] key = Guid.NewGuid().ToByteArray();
string _token = Convert.ToBase64String(binName.Concat(key).ToArray());
// The above creates a token with the name and the "key", works well
}
用于解密令牌的通用处理程序的代码(结果见示例)
if(postType == "check")
{
string _token = dict["token"] as string;
byte[] data = Convert.FromBase64String(_token);
string theCode = encoder.GetString(data); // This will get both the username and the GUID key within
context.Response.Write(jss.Serialize(new Code { eCode = theCode })); // Returns in JSON, irrelevant to the question, it works well
}
示例:如果名称为“user”,则变量“theCode”将保存“userXyZxYzXyZ”的值(而 XyZ 代表 GUID 的“随机”键)。
我认为公平地说,我的问题是如何在解密时将此 GUID 的密钥与用户名分开
【问题讨论】:
-
Guid.NewGuid!= 加密 -
您是否只需要在它们之间添加一些字符,这样您就可以在解密时拆分它们,例如加密时添加一个 |在名称和 guid 之间。
-
@spender 是的,谢谢。我使用了错误的术语。我的意思不一样。
标签: c# asp.net encryption encoding handler