<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Security</title>
        <link>http://geekswithblogs.net/rashid/category/6046.aspx</link>
        <description>Security</description>
        <language>en-US</language>
        <copyright>Kazi Manzur Rashid</copyright>
        <managingEditor>kazimanzurrashid@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Secure Cookie</title>
            <link>http://geekswithblogs.net/rashid/archive/2007/01/18/103910.aspx</link>
            <description>&lt;p&gt;This my second post of almost same topic asp.net lacking. This time it is Cookie. Still Asp.net has the lacking of creating encrypted cookie. Here is another handy class which generates encrypted cookie.&lt;/p&gt; &lt;p&gt;Usage:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;//Writing Cookie&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;SecureCookie&lt;/span&gt;.Set(Response, &lt;span style="color: rgb(163,21,21)"&gt;"Key1"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"Value1"&lt;/span&gt;, &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt;.Now.AddDays(1));&lt;br /&gt;&lt;span style="color: rgb(43,145,175)"&gt;SecureCookie&lt;/span&gt;.Set(Response, &lt;span style="color: rgb(163,21,21)"&gt;"Key1"&lt;/span&gt;, &lt;span style="color: rgb(163,21,21)"&gt;"Value1"&lt;/span&gt;); &lt;span style="color: rgb(0,128,0)"&gt;//Overloaded &lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;//Reading Cookie&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key1Value = &lt;span style="color: rgb(43,145,175)"&gt;SecureCookie&lt;/span&gt;.Get(Request, &lt;span style="color: rgb(163,21,21)"&gt;"Key1"&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;SecureCookie: &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Diagnostics;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Security.Cryptography;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;sealed&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SecureCookie&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;//Rijndael Key size is 256 bit or 32 byte, Can also be mentioned in web.config instead of hardcoding&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;readonly&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] Key = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] {45, 236, 171, 7, 85, 6, 41, 34, 216, 14, 78, 156, 78, 3, 103, 154, 9, 150, 65, 54, 226, 95, 68, 79, 159, 36, 246, 57, 177, 107, 116, 8};&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Set(&lt;span style="color: rgb(43,145,175)"&gt;HttpResponse&lt;/span&gt; response,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; value,&lt;br /&gt;    &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt; expire)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;HttpCookie&lt;/span&gt; cookie = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;HttpCookie&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncode(Encrypt(key)), &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncode(Encrypt(value)));&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((expire != &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt;.MinValue) &amp;amp;&amp;amp; (expire != &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt;.MaxValue))&lt;br /&gt;        {&lt;br /&gt;            cookie.Expires = expire;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        response.Cookies.Set(cookie);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Set(&lt;span style="color: rgb(43,145,175)"&gt;HttpResponse&lt;/span&gt; response,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; value)&lt;br /&gt;    {&lt;br /&gt;        Set(response, key, value, &lt;span style="color: rgb(43,145,175)"&gt;DateTime&lt;/span&gt;.MaxValue);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Get(&lt;span style="color: rgb(43,145,175)"&gt;HttpRequest&lt;/span&gt; request, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;HttpCookie&lt;/span&gt; cookie = request.Cookies[&lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncode(Encrypt(key))];&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (cookie == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((cookie.Value == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) || (cookie.Value.Length == 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; value = &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlDecode(cookie.Value);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; Decrypt(value);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Encrypt(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; plain)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((plain == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) || (plain.Length == 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = CreateCrypto())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; System.&lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToBase64String(Read(crypto.CreateEncryptor(), &lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.ASCII.GetBytes(plain)));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Decrypt(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; cipher)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((cipher == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) || (cipher.Length == 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = CreateCrypto())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.ASCII.GetString(Read(crypto.CreateDecryptor(), System.&lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.FromBase64String(cipher)));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; CreateCrypto()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;//Using Rijndael as it is much more secure among the others&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;RijndaelManaged&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        crypto.Key = Key;&lt;br /&gt;        crypto.IV = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[crypto.IV.Length];&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; crypto;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] Read(&lt;span style="color: rgb(43,145,175)"&gt;ICryptoTransform&lt;/span&gt; transformer,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] data)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; ms = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;CryptoStream&lt;/span&gt; cs = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;CryptoStream&lt;/span&gt;(ms, transformer, &lt;span style="color: rgb(43,145,175)"&gt;CryptoStreamMode&lt;/span&gt;.Write))&lt;br /&gt;            {&lt;br /&gt;                cs.Write(data, 0, data.Length);&lt;br /&gt;                cs.FlushFinalBlock();&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;  ms.ToArray();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://geekswithblogs.net/rashid/archive/2007/01/18/103910.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://geekswithblogs.net/rashid/archive/2007/01/18/103910.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103910"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103910" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/rashid/aggbug/103910.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kazi Manzur Rashid</dc:creator>
            <guid>http://geekswithblogs.net/rashid/archive/2007/01/18/103910.aspx</guid>
            <pubDate>Thu, 18 Jan 2007 17:20:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rashid/comments/103910.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rashid/archive/2007/01/18/103910.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rashid/comments/commentRss/103910.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rashid/services/trackbacks/103910.aspx</trackback:ping>
        </item>
        <item>
            <title>Secure Url</title>
            <link>http://geekswithblogs.net/rashid/archive/2007/01/18/103875.aspx</link>
            <description>&lt;p&gt;Asp.net 2.0 has been released, but Asp.net still does not have any built-in support for passing querystring in encrypted text. The following class will give you the support to pass querystring in encrypted rather than plain. &lt;/p&gt; &lt;p&gt;Usage: &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;//WebForm1.aspx, From the sender&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;SecureUrl&lt;/span&gt; url = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SecureUrl&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"WebForm2.aspx?Key1=Value1&amp;amp;Key2=Value2"&lt;/span&gt;);&lt;span style="color: rgb(0,128,0)"&gt;// WebForm2.aspx?param=HrxR96wU%2foN8VhElKlT32taPZLQzADf1&lt;br /&gt;&lt;/span&gt;Response.Redirect(url.ToString());&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,128,0)"&gt;//WebForm2.aspx, To Receiver&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;SecureUrl&lt;/span&gt; url = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SecureUrl&lt;/span&gt;(Request.Url.PathAndQuery);&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Key1Value = url[&lt;span style="color: rgb(163,21,21)"&gt;"Key1"&lt;/span&gt;];&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Key2Value = url[&lt;span style="color: rgb(163,21,21)"&gt;"Key2"&lt;/span&gt;];&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;SecureUrl:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Diagnostics;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Collections;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Collections.Specialized;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Security.Cryptography;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;sealed&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SecureUrl&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; ENCRYPTED_KEY_NAME = &lt;span style="color: rgb(163,21,21)"&gt;"param"&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; RETURN_URL = &lt;span style="color: rgb(163,21,21)"&gt;"returnUrl"&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; RETURN_PARAM = &lt;span style="color: rgb(163,21,21)"&gt;"returnParam"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,128,0)"&gt;//DES Key size is 64 bit or 8 byte&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;readonly&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] Key = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] {33, 93, 171, 1, 85, 23, 231, 145};&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; _pageUrl = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringDictionary&lt;/span&gt; _queryString = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringDictionary&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;[&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key]&lt;br /&gt;    {&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;get&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (_queryString.ContainsKey(key.ToLower()))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; _queryString[key];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;        }&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;set&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt; != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;.Trim().Length &amp;gt; 0))&lt;br /&gt;            {&lt;br /&gt;                _queryString[key.ToLower()] = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                _queryString.Remove(key.ToLower());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; ReturnUrl&lt;br /&gt;    {&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;get&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (_queryString.ContainsKey(RETURN_URL))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; _queryString[RETURN_URL];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;        }&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;set&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt; != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;.Trim().Length &amp;gt; 0))&lt;br /&gt;            {&lt;br /&gt;                _queryString[RETURN_URL] = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                _queryString.Remove(RETURN_URL);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; ReturnParameters&lt;br /&gt;    {&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;get&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (_queryString.ContainsKey(RETURN_PARAM))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; _queryString[RETURN_PARAM];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;        }&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;set&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt; != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;.Trim().Length &amp;gt; 0))&lt;br /&gt;            {&lt;br /&gt;                _queryString[RETURN_PARAM] = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;;&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                _queryString.Remove(RETURN_PARAM);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; SecureUrl(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; fullUrl)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (fullUrl.IndexOf(&lt;span style="color: rgb(163,21,21)"&gt;'?'&lt;/span&gt;) &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] urlAndQueryString = fullUrl.Split(&lt;span style="color: rgb(163,21,21)"&gt;'?'&lt;/span&gt;);&lt;br /&gt;            _pageUrl = urlAndQueryString[0];&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (urlAndQueryString.Length &amp;gt; 1)&lt;br /&gt;            {&lt;br /&gt;                Parse(urlAndQueryString[1]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            _pageUrl = fullUrl;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; SecureUrl(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; url, &lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; queryString)&lt;br /&gt;    {&lt;br /&gt;        _pageUrl = url;&lt;br /&gt;        Parse(queryString);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Clear()&lt;br /&gt;    {&lt;br /&gt;        _queryString.Clear();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; Contains(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; _queryString.ContainsKey(key.ToLower());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Remove(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key)&lt;br /&gt;    {&lt;br /&gt;        _queryString.Remove(key);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; ToString(&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; ToString(&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; unicode)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;StringBuilder&lt;/span&gt; queryString = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;DictionaryEntry&lt;/span&gt; entry &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; _queryString)&lt;br /&gt;        {&lt;br /&gt;            queryString.Append(entry.Key.ToString().ToLower());&lt;br /&gt;            queryString.Append(&lt;span style="color: rgb(163,21,21)"&gt;'='&lt;/span&gt;);&lt;br /&gt;            queryString.Append(&lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncode(entry.Value.ToString()));&lt;br /&gt;            queryString.Append(&lt;span style="color: rgb(163,21,21)"&gt;'&amp;amp;'&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (queryString.Length &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,128,0)"&gt;//Remove the last &amp;amp;&lt;br /&gt;&lt;/span&gt;            queryString.Remove(queryString.Length - 1, 1);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; encryptedQuery = Encrypt(queryString.ToString());&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; encodedQuery = &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncode(encryptedQuery);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (unicode)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,128,0)"&gt;//Required if we are passing it to JavaScript&lt;br /&gt;&lt;/span&gt;            encodedQuery = &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlEncodeUnicode(encodedQuery);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; result = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (encodedQuery.Length &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            result = _pageUrl + &lt;span style="color: rgb(163,21,21)"&gt;"?"&lt;/span&gt; + ENCRYPTED_KEY_NAME + &lt;span style="color: rgb(163,21,21)"&gt;"="&lt;/span&gt; + encodedQuery;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            result = _pageUrl;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Parse(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; queryString)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] pairs = queryString.Split(&lt;span style="color: rgb(163,21,21)"&gt;'&amp;amp;'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((pairs != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (pairs.Length &amp;gt; 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;for&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; i = 0; i &amp;lt; pairs.Length; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] pair = pairs[i].Split(&lt;span style="color: rgb(163,21,21)"&gt;'='&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; key = pair[0];&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; value = pair[1];&lt;br /&gt;&lt;br /&gt;                value = &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlDecode(value);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Compare(key, ENCRYPTED_KEY_NAME, &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;) == 0)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (value.Length &amp;gt; 0)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; decryptedString = &lt;span style="color: rgb(43,145,175)"&gt;HttpUtility&lt;/span&gt;.UrlDecode(Decrypt(value));&lt;br /&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] keyAndValues = decryptedString.Split(&lt;span style="color: rgb(163,21,21)"&gt;'&amp;amp;'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((keyAndValues != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (keyAndValues.Length &amp;gt; 0))&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span style="color: rgb(0,0,255)"&gt;for&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; j = 0; j &amp;lt; keyAndValues.Length; j++)&lt;br /&gt;                            {&lt;br /&gt;                                &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] keyAndValue = keyAndValues[j].Split(&lt;span style="color: rgb(163,21,21)"&gt;'='&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((keyAndValue != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (keyAndValue.Length == 2))&lt;br /&gt;                                {&lt;br /&gt;                                    _queryString.Add(keyAndValue[0].ToLower(), keyAndValue[1]);&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;                {&lt;br /&gt;                    _queryString.Add(key.ToLower(), value);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Encrypt(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; plain)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((plain == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) || (plain.Length == 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = CreateCrypto())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; System.&lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToBase64String(Read(crypto.CreateEncryptor(), &lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.ASCII.GetBytes(plain)));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Decrypt(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; cipher)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((cipher == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;) || (cipher.Length == 0))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = CreateCrypto())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.ASCII.GetString(Read(crypto.CreateDecryptor(), System.&lt;span style="color: rgb(43,145,175)"&gt;Convert&lt;/span&gt;.FromBase64String(cipher)));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; CreateCrypto()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;//Using DES as it is the fastest among the others&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;SymmetricAlgorithm&lt;/span&gt; crypto = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DESCryptoServiceProvider&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        crypto.Key = Key;&lt;br /&gt;        crypto.IV = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[crypto.IV.Length];&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; crypto;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;DebuggerStepThrough&lt;/span&gt;()]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] Read(&lt;span style="color: rgb(43,145,175)"&gt;ICryptoTransform&lt;/span&gt; transformer,&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;byte&lt;/span&gt;[] data)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; ms = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;())&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;CryptoStream&lt;/span&gt; cs = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;CryptoStream&lt;/span&gt;(ms, transformer, &lt;span style="color: rgb(43,145,175)"&gt;CryptoStreamMode&lt;/span&gt;.Write))&lt;br /&gt;            {&lt;br /&gt;                cs.Write(data, 0, data.Length);&lt;br /&gt;                cs.FlushFinalBlock();&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;  ms.ToArray();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://geekswithblogs.net/rashid/archive/2007/01/18/103875.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://geekswithblogs.net/rashid/archive/2007/01/18/103875.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103875"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103875" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/rashid/aggbug/103875.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kazi Manzur Rashid</dc:creator>
            <guid>http://geekswithblogs.net/rashid/archive/2007/01/18/103875.aspx</guid>
            <pubDate>Thu, 18 Jan 2007 11:17:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rashid/comments/103875.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rashid/archive/2007/01/18/103875.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rashid/comments/commentRss/103875.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rashid/services/trackbacks/103875.aspx</trackback:ping>
        </item>
        <item>
            <title>My First Article</title>
            <link>http://geekswithblogs.net/rashid/archive/2007/01/14/103526.aspx</link>
            <description>&lt;p&gt;Recently I wrote an article &lt;a href="http://www.codeproject.com/useritems/SecureDataExchange.asp" target="_blank"&gt;"How to exchange data securely with a WebService without HTTPS/SSL"&lt;/a&gt; in &lt;a href="http://www.codeproject.com" target="_blank"&gt;codeproject&lt;/a&gt;. If Cryptography, Public/Private Key, Digital Signature and Web Service are one of your interest, I strongly recommend to read it.&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.dotnetkicks.com/kick/?url=http://www.codeproject.com/useritems/SecureDataExchange.asp"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.codeproject.com/useritems/SecureDataExchange.asp" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103526"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103526" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/rashid/aggbug/103526.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kazi Manzur Rashid</dc:creator>
            <guid>http://geekswithblogs.net/rashid/archive/2007/01/14/103526.aspx</guid>
            <pubDate>Sat, 13 Jan 2007 18:14:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rashid/comments/103526.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rashid/archive/2007/01/14/103526.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rashid/comments/commentRss/103526.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rashid/services/trackbacks/103526.aspx</trackback:ping>
        </item>
    </channel>
</rss>