我有一個字典對象,我想加密,然後把它放在查詢字符串中,然後在另一邊解密它。通過加密的查詢字符串傳遞字典
我爲此使用JavaScriptSerializer。現在我已經在同一頁onload上試了這個,並且它工作。所以我使用的加密/解密擴展方法正在工作。這導致我相信查詢字符串有一些問題。
例如
var js = new JavaScriptSerializer();
var d = new Dictionary<string, string>();
d.Add("ID", "123456");
d.Add("Name", "HELLO TEST");
d.Add("Email", "[email protected]");
var s = js.Serialize(d).EncryptString();
var ds = js.Deserialize<Dictionary<string, string>>(s.DecryptString());
@ViewBag.Test = ds["Name"];
在上述例子中,EncryptString()
和DecryptString()
是擴展方法我使用。這按預期工作,所以它爲"Name"
提供正確的值。
當我將序列化的加密字符串放入查詢字符串然後嘗試解碼它時遇到問題。
所以第一頁面上,我有這樣的事情:
var js = new JavaScriptSerializer();
var d = new Dictionary<string, string>();
d.Add("ID", "123456");
d.Add("Name", "HELLO TEST");
d.Add("Email", "[email protected]");
var s = HttpUtility.UrlEncode(js.Serialize(d).EncryptString());
s
然後作爲查詢字符串。
在接收頁,我有這個:
public ActionResult Display(string r)
{
var js = new JavaScriptSerializer();
var decryptedString = HttpUtility.UrlDecode(r).DecryptString();
var s = js.Deserialize<Dictionary<string, string>>(decryptedString);
return View();
}
這將引發一個錯誤:在decryptstring行此錯誤。
我不明白這是怎麼回事......我URL編碼文本它進入查詢字符串之前,則urldecoding它它的反序列化之前..
編輯
想通了..我正在加密兩次......
這沒有什麼區別。還是一樣的錯誤。 – jzm 2012-04-05 03:07:36
@rudeovskizebear:你能告訴我們如何從這個's'值生成URL嗎? – StriplingWarrior 2012-04-05 03:10:30
嗯,我試過字典,因爲我不知道還有什麼用。但是,我得到它的工作後,我得到一個錯誤說,字典序列化不受支持。我現在已將其轉換爲列表。你有什麼建議? – jzm 2012-04-05 03:35:14