2014-01-16 48 views
0

所以,我使用cookie来存储一些基本数据。一切正常。 现在,我想加密cookie数据。我正在使用TripleDES加密(192)。这工作正常,但其中一个要求是在一个大的长字符串中加密整个数据 - 稍后在阅读时,必须在解密后手动解析这些值 - 没关系。Cookie加密奇怪

奇怪的问题是,当我加密名称值,然后设置加密值,下一次我在不同的请求(即按钮单击)上阅读它时,它找不到键/名称!我看在对象可视化工具,看到这个名字确实比我原先分配稍微不同:

//保存

var cookie = new HttpCookie("MyCookie"); 
var encryptedName = MySecurityHelper.TripleDES.Encrypt("UserInfo"); 
var encryptedData = MySecurityHelper.TripleDES.Encrypt("Id:1[]Name:Joe"); // [] is the delimiter 
cookie[encryptedName] = encryptedData; 
Response.Cookies.Add(cookie); 

//读取

var cookie = Request.Cookies["MyCookie"]; 
var encryptedName = MySecurityHelper.TripleDES.Encrypt("UserInfo"); 
var decryptedData = MySecurityHelper.TripleDES.Decrypt(cookie[encryptedName]); 

任何想法,为什么?

所以保存时,cookie的名称值可以是: FzgGr1 =

但随后询问该Cookie对象时后,其FzgGr1

任何想法,为什么这将是对后续请求有什么不同?完全奇怪和无法解释。

+0

任何原因,你使用的是真的过时的加密算法? –

+1

也许浏览器将=字符视为分隔符,因此不会保留它? – Zruty

+0

什么是MySecurityHelper? –

回答