Ich habe ein Wörterbuchobjekt, das ich verschlüsseln möchte, dann in eine Querystring, dann entschlüsseln Sie es auf der anderen Seite.Ein Wörterbuch durch verschlüsselte Querystring übergeben
Ich benutze JavaScriptSerializer für diese. Jetzt habe ich dies auf der gleichen Seite onload versucht, und es hat funktioniert. Also die Verschlüsselungs-/Entschlüsselungs-Erweiterungsmethoden, die im Einsatz sind, funktionieren. Das führt mich zu der Annahme, dass mit dem Querystring ein Problem besteht.
z.B.
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"];
In dem obigen Beispiel EncryptString()
und DecryptString()
sind die Erweiterungsmethoden i bin mit. Dies funktioniert wie vorgesehen, daher zieht es den richtigen Wert für "Name"
.
Ich habe Probleme, wenn ich die serialisierte verschlüsselte Zeichenfolge in die Querystring legte, dann versuchen und entschlüsseln.
So auf der ersten Seite, habe ich so etwas wie diese:
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
dann als Abfragezeichenfolgeflag verwendet wird.
Auf der Empfangsseite, ich habe dies:
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();
}
dies einen Fehler wirft: System.FormatException: Invalid length for a Base-64 char array or string.
Diese Fehler auf der decryptstring Linie.
ich nicht bekommen, was los ist ... Ich bin urlencoding den Text, bevor es in die Abfragezeichenfolgeflag geht, urldecoding es dann, bevor es deserialisiert ist ..
EDIT
figured it out .. Ich verschlüsselte es zweimal ...
Das machte keinen Unterschied. Immer noch der gleiche Fehler. – jzm
@rudeovskizebear: Können Sie uns zeigen, wie die URL von diesem 's' Wert generiert wird? – StriplingWarrior
Nun, ich versuchte Wörterbuch, da ich nicht sicher war, was ich sonst noch benutzen sollte. Aber nachdem ich es zum Laufen gebracht habe, bekam ich einen Fehler, der besagt, dass die Wörterbuch-Serialisierung nicht unterstützt wird. Ich habe es jetzt in eine Liste umgewandelt. Was empfehlen Sie? – jzm