// Расшифровать данные и добавить содержимое
int Index;
string[] SplittedData = StringData.Split(new char[] {'&'} );
foreach (string SingleData in SplittedData)
{
Index = SingleData.IndexOf('=');
base.Add(
HttpUtility.UrlDecode(SingleData.Substring(0, Index)),
HttpUtility.UrlDecode(SingleData.Substring(Index + 1))
);
}
}
Конструктор первым делом декодирует шестнадцатеричную информацию из переданной строки и воспользуется DPAPI для расшифровки информации, записанной в строке запроса. Затем он разбивает информацию на ее части и добавляет пары имя-значение в базовую StringCollection.
Теперь у вас есть готовая инфраструктура для создания простой тестовой страницы и безопасной передачи ее от одной страницы к другой.
Чтобы протестировать класс EncryptedQueryString, вам понадобятся две страницы — одна, устанавливающая строку запроса и перенаправляющая пользователя на другую страницу, которая извлекает строку запроса. Первая содержит текстовое поле для ввода информации, как показано ниже:
<form id="form1" runat="server">
<div>
Enter some data here: <asp:TextBox runat="server" ID="MyData" />
<br />
<br />
<asp:Button ID="SendCommand" runat="server" Text="Send Info"
OnClick="SendCommand_Click" />
</div>
</form>
Когда пользователь щелкает на кнопке SendCommand, страница посылает зашифрованную строку запроса принимающей странице следующим образом:
protected void SendCommand_Click(object sender, EventArgs e)
{
EncryptedQueryString QueryString = new EncryptedQueryString();
QueryString.Add("MyData", MyData.Text);
QueryString.Add("MyTime", DateTime.Now.ToLongTimeString());
QueryString.Add("MyDate", DateTime.Now.ToLongDateString());
Response.Redirect("QueryStringRecipient.aspx?data=" +
QueryString.ToString());
}
Обратите внимание, что страница вводит полностью зашифрованную строку данных как один параметр по имени data в строку запроса страницы назначения. На рис. 25.9 показана страница в действии.
Целевая страница десериализует переданную через параметр строку в параметр строки запроса с помощью ранее созданного класса, как показано ниже:
предыдущая следующая страница вначало главы оглавление
1022