<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andrei DANEASA &#187; .NET</title>
	<atom:link href="http://www.webxpert.ro/andrei/category/programming/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webxpert.ro/andrei</link>
	<description>Programming, database, security, Oracle, .NET, C#, PHP, Travel</description>
	<lastBuildDate>Tue, 18 Oct 2011 15:42:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>&#8220;Package load failure&#8221; error using ODP.Net &amp; VS2005</title>
		<link>http://www.webxpert.ro/andrei/2007/05/03/package-load-failure-error-using-odpnet-vs2005/</link>
		<comments>http://www.webxpert.ro/andrei/2007/05/03/package-load-failure-error-using-odpnet-vs2005/#comments</comments>
		<pubDate>Thu, 03 May 2007 06:36:20 +0000</pubDate>
		<dc:creator>andreiash</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.webxpert.ro/andrei/2007/05/03/package-load-failure-error-using-odpnet-vs2005/</guid>
		<description><![CDATA[If you install VS2005 and then ODP.Net you will probably get a strange error when you will try to use Oracle Explorer for the first time: Package &#8216;Oracle Developer Tools for Visual Studio .NET&#8217; has failed to load properly &#40; GUID = &#123;D601BB95-E404-4A8E-9F24-5C1A462426CE&#125; &#41;. Please contact package vendor for assistance. Application restart is recommended, due [...]]]></description>
			<content:encoded><![CDATA[<p>If you install VS2005 and then ODP.Net you will probably get a strange error when you will try to use Oracle Explorer for the first time:</p>
<div class="dean_ch" style="white-space: wrap;">
Package <span class="st0">&#8216;Oracle Developer Tools for Visual Studio .NET&#8217;</span> has failed <br />
to load properly <span class="br0">&#40;</span> GUID = <span class="br0">&#123;</span>D601BB95-E404-4A8E-9F24-5C1A462426CE<span class="br0">&#125;</span> <span class="br0">&#41;</span>. <br />
Please contact package vendor for assistance. Application restart is <br />
recommended, due to possible environment corruption. Would you like to <br />
disable loading this package in the future? You may use <br />
<span class="st0">&#8216;devenv /resetskippkgs&#8217;</span> to re-enable package loading.<br />
&nbsp;</div>
<p>The problem is an assembly mismatch. As Christian Shay (principal product manager for ODP.net at Oracle) said <a href="http://forums.oracle.com/forums/ann.jspa?annID=258">in an announcement</a>, there are 2 options to solve this issue:<br />
<strong><br />
1. My recommended solution:</p>
<p>Execute the following command from a command prompt:</p>
<div class="dean_ch" style="white-space: wrap;">gacutil /i &lt;Oracle Home&gt;\odp<span class="re1">.net</span>\bin\<span class="nu0">2</span><span class="re1">.x</span>\Oracle<span class="re1">.DataAccess</span><span class="re1">.dll</span></div>
<p>where <Oracle Home> is the Oracle Home directory where you installed ODT 2005. For example, <Oracle Home> on my machine is c:\oracle\product\10.2.0\client_1.</strong></p>
<p>2. Reinstall:</p>
<p>Deinstall ODP.NET 1.x from your machine (if you&#8217;re not using it) and install ODP.NET 2.0 in the same Oracle Home.<br />
<em><br />
Andrei<br />
<a href="http://www.webxpert.ro">http://www.webxpert.ro</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webxpert.ro/andrei/2007/05/03/package-load-failure-error-using-odpnet-vs2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.Net DataGrid and XML as dataSource</title>
		<link>http://www.webxpert.ro/andrei/2006/01/18/aspnet-datagrid-and-xml-as-datasource/</link>
		<comments>http://www.webxpert.ro/andrei/2006/01/18/aspnet-datagrid-and-xml-as-datasource/#comments</comments>
		<pubDate>Wed, 18 Jan 2006 09:23:41 +0000</pubDate>
		<dc:creator>andreiash</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.webxpert.ro/andrei/2006/01/18/aspnet-datagrid-and-xml-as-datasource/</guid>
		<description><![CDATA[A short tutorial of how to user ASP.Net DataGrid with XML file as dataSource]]></description>
			<content:encoded><![CDATA[<p>This is intended to be a tutorial of how to use ASP.Net DataGrid for view, edit, insert and delete items from an XML file.<br />
Many people probably would need to keep some small amount of data in XML files rather than in the database. Manipulating this data is very simple and it can be made with a DataGrid, and this is the scope of this article, to show you how.</p>
<p>The result must look like this one:<br />
<img src="/andrei/wp-content/datagrid1.jpg"/></p>
<p>First of all we need the XML file</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="sc3"><span class="re1">&lt;</span> ?xml <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">standalone</span>=<span class="st0">&quot;yes&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;catalog<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;cd<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;title<span class="re2">&gt;</span></span></span>Empire Burlesque<span class="sc3"><span class="re1">&lt;/title<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artist<span class="re2">&gt;</span></span></span>Bob Dylan<span class="sc3"><span class="re1">&lt;/artist<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;country<span class="re2">&gt;</span></span></span>USA<span class="sc3"><span class="re1">&lt;/country<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;price<span class="re2">&gt;</span></span></span>10.90<span class="sc3"><span class="re1">&lt;/price<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;year<span class="re2">&gt;</span></span></span>1985<span class="sc3"><span class="re1">&lt;/year<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>1<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/cd<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;cd<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;title<span class="re2">&gt;</span></span></span>Flick Of The Switch<span class="sc3"><span class="re1">&lt;/title<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artist<span class="re2">&gt;</span></span></span>AC DC<span class="sc3"><span class="re1">&lt;/artist<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;country<span class="re2">&gt;</span></span></span>Australia<span class="sc3"><span class="re1">&lt;/country<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;price<span class="re2">&gt;</span></span></span>15.90<span class="sc3"><span class="re1">&lt;/price<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;year<span class="re2">&gt;</span></span></span>1983<span class="sc3"><span class="re1">&lt;/year<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>2<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/cd<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;cd<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;title<span class="re2">&gt;</span></span></span>Gold<span class="sc3"><span class="re1">&lt;/title<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artist<span class="re2">&gt;</span></span></span>Nirvana<span class="sc3"><span class="re1">&lt;/artist<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;country<span class="re2">&gt;</span></span></span>USA<span class="sc3"><span class="re1">&lt;/country<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;price<span class="re2">&gt;</span></span></span>10.90<span class="sc3"><span class="re1">&lt;/price<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;year<span class="re2">&gt;</span></span></span>1991<span class="sc3"><span class="re1">&lt;/year<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>4<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/cd<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;cd<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;title<span class="re2">&gt;</span></span></span>Kings of Metal<span class="sc3"><span class="re1">&lt;/title<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artist<span class="re2">&gt;</span></span></span>Manowar<span class="sc3"><span class="re1">&lt;/artist<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;country<span class="re2">&gt;</span></span></span>USA<span class="sc3"><span class="re1">&lt;/country<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;price<span class="re2">&gt;</span></span></span>17.90<span class="sc3"><span class="re1">&lt;/price<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;year<span class="re2">&gt;</span></span></span>1988<span class="sc3"><span class="re1">&lt;/year<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>3<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/cd<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;cd<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;title<span class="re2">&gt;</span></span></span>Rocka Rolla<span class="sc3"><span class="re1">&lt;/title<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artist<span class="re2">&gt;</span></span></span>Judas Priest<span class="sc3"><span class="re1">&lt;/artist<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;country<span class="re2">&gt;</span></span></span>England<span class="sc3"><span class="re1">&lt;/country<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;price<span class="re2">&gt;</span></span></span>16.90<span class="sc3"><span class="re1">&lt;/price<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;year<span class="re2">&gt;</span></span></span>1974<span class="sc3"><span class="re1">&lt;/year<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;style<span class="re2">&gt;</span></span></span>3<span class="sc3"><span class="re1">&lt;/style<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/cd<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/catalog<span class="re2">&gt;</span></span></span></div>
<p>We saved this file in the application root as <strong>source.xml</strong></p>
<p>Then we will create a new webform page named xmlDataGrid.aspx, and add a DataGrid control, a Button and set tht title, exactly like in the above screenshot.<br />
AutoGenerateColumns must set to false and must add the following columns in the DataGrid:<br />
- Title binded to TITLE DataField<br />
- Artist binded to ARTIST DataField<br />
- Country binded to COUNTRY DataField<br />
- Price binded to PRICE DataField<br />
- Year binded to YEAR DataField<br />
- Style binded to STYLE DataField<br />
- Button column for &#8220;Edit, Update, Cancel&#8221;<br />
- Button column for &#8220;Delete&#8221;</p>
<p>The code for the aspx page is the following:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="sc2"><a href="http://december.com/html/4/element/html.html"><span class="kw2">&lt;html&gt;</span></a></span><br />
<span class="sc2"><a href="http://december.com/html/4/element/head.html"><span class="kw2">&lt;head&gt;</span></a></span><br />
<span class="sc2"><span class="kw2">&lt;/head&gt;</span></span><br />
<span class="sc2"><a href="http://december.com/html/4/element/body.html"><span class="kw2">&lt;body&gt;</span></a></span><br />
&nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/form.html"><span class="kw2">&lt;form</span></a> runat=<span class="st0">&quot;server&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/p.html"><span class="kw2">&lt;p</span></a> <span class="kw3">align</span>=<span class="st0">&quot;center&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/font.html"><span class="kw2">&lt;font</span></a> <span class="kw3">face</span>=<span class="st0">&quot;Tahoma&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><a href="http://december.com/html/4/element/strong.html"><span class="kw2">&lt;strong&gt;</span></a></span>DataGrid <span class="sc1">&amp;amp;</span> XML DataSource Example<span class="sc2"><span class="kw2">&lt;/strong&gt;</span></span><span class="sc2"><span class="kw2">&lt;/font&gt;</span></span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :Button <span class="kw3">id</span>=<span class="st0">&quot;btnAdd&quot;</span> <span class="kw3">onclick</span>=<span class="st0">&quot;btnAdd_Click&quot;</span> runat=<span class="st0">&quot;server&quot;</span> <span class="kw3">Text</span>=<span class="st0">&quot;Add new row&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp <img src='http://www.webxpert.ro/andrei/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ataGrid <span class="kw3">id</span>=<span class="st0">&quot;dgCatalog&quot;</span> runat=<span class="st0">&quot;server&quot;</span> AlternatingItemStyle-BackColor=<span class="st0">&quot;#EEEEEE&quot;</span> ItemStyle-BackColor=<span class="st0">&quot;#FFFFCC&quot;</span> HorizontalAlign=<span class="st0">&quot;Center&quot;</span> Font-<span class="kw3">Size</span>=<span class="st0">&quot;10px&quot;</span> Font-<span class="kw3">Name</span>=<span class="st0">&quot;Tahoma&quot;</span> <span class="kw3">CellPadding</span>=<span class="st0">&quot;3&quot;</span> Font-Names=<span class="st0">&quot;Tahoma&quot;</span> AutoGenerateColumns=<span class="st0">&quot;False&quot;</span> OnCancelCommand=<span class="st0">&quot;dgCatalog_CancelCommand&quot;</span> OnDeleteCommand=<span class="st0">&quot;dgCatalog_DeleteCommand&quot;</span> OnEditCommand=<span class="st0">&quot;dgCatalog_EditCommand&quot;</span> OnUpdateCommand=<span class="st0">&quot;dgCatalog_UpdateCommand&quot;</span> <span class="kw3">Width</span>=<span class="st0">&quot;550px&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;alternatingitemstyle backcolor=<span class="st0">&quot;#EEEEEE&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/alternatingitemstyle&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;itemstyle backcolor=<span class="st0">&quot;#FFFFCC&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/itemstyle&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;headerstyle backcolor=<span class="st0">&quot;Aqua&quot;</span> font-italic=<span class="st0">&quot;False&quot;</span> font-strikeout=<span class="st0">&quot;False&quot;</span> font-underline=<span class="st0">&quot;False&quot;</span> font-overline=<span class="st0">&quot;False&quot;</span> font-bold=<span class="st0">&quot;True&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/headerstyle&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;columns&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;TITLE&quot;</span> HeaderText=<span class="st0">&quot;Title&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;ARTIST&quot;</span> HeaderText=<span class="st0">&quot;Artist&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;COUNTRY&quot;</span> HeaderText=<span class="st0">&quot;Country&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;PRICE&quot;</span> HeaderText=<span class="st0">&quot;Price&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;YEAR&quot;</span> HeaderText=<span class="st0">&quot;Year&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :BoundColumn DataField=<span class="st0">&quot;STYLE&quot;</span> HeaderText=<span class="st0">&quot;Style&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :EditCommandColumn CancelText=<span class="st0">&quot;Cancel&quot;</span> UpdateText=<span class="st0">&quot;Update&quot;</span> EditText=<span class="st0">&quot;Edit&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;asp :ButtonColumn CommandName=<span class="st0">&quot;Delete&quot;</span> <span class="kw3">Text</span>=<span class="st0">&quot;Delete&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/columns&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/asp&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/p.html"><span class="kw2">&lt;p</span></a> <span class="kw3">align</span>=<span class="st0">&quot;center&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/font.html"><span class="kw2">&lt;font</span></a> <span class="kw3">face</span>=<span class="st0">&quot;Tahoma&quot;</span> <span class="kw3">size</span>=<span class="st0">&quot;1&quot;</span><span class="kw2">&gt;</span></span>©2005 Andrei DANEASA &#8211; <span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;http://www.webxpert.ro&quot;</span><span class="kw2">&gt;</span></span>http://www.webxpert.ro<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span><span class="sc2"><span class="kw2">&lt;/font&gt;</span></span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;/form&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/body&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/html&gt;</span></span></div>
<p>In order to add some functionality to the DataGrid, first of all we need to load the data to the grid.<br />
In the Page_Load event, we wil fill the dataset with XML data and then bind the DataGrid to this dataset:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//the dataset that will keep the data</span><br />
<span class="kw5">System</span>.<span class="me1">Data</span>.<span class="me1">DataSet</span> myDataSet = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> <span class="kw5">System</span>.<span class="me1">Data</span>.<span class="me1">DataSet</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p><span class="kw1">void</span> Page_Load<span class="br0">&#40;</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; FillData<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!Page.<span class="me1">IsPostBack</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1">//populate the dataset from XML</span><br />
<span class="kw1">void</span> FillData<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//read the XML into the DataSet</span><br />
&nbsp; &nbsp; myDataSet.<span class="me1">ReadXml</span><span class="br0">&#40;</span>Server.<span class="me1">MapPath</span><span class="br0">&#40;</span><span class="st0">&quot;source.xml&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="co1">//set the grid&#8217;s DataSource to DataSet</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataSource</span> = myDataSet;<br />
<span class="br0">&#125;</span></div>
<p>Now the DataGrid will display the data like in the above screenshot. We need to add functionalities for Edit, Delete and Update events.<br />
Before writing these events, we must write the function that will save the dataset back to disk as XML file. </p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//write XML back to disk</span><br />
<span class="kw1">void</span> SaveData<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; myDataSet.<span class="me1">WriteXml</span><span class="br0">&#40;</span>Server.<span class="me1">MapPath</span><span class="br0">&#40;</span><span class="st0">&quot;source.xml&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
<p><img src="/andrei/wp-content/datagrid2.jpg"/></p>
<p>The simplest events are Edit and Delete:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//event occurs when Edit link is clicked</span><br />
<span class="kw1">void</span> dgCatalog_EditCommand<span class="br0">&#40;</span><span class="kw4">object</span> sender, DataGridCommandEventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//turn the selected Item in Edit mode</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">EditItemIndex</span> = e.<span class="me1">Item</span>.<span class="me1">ItemIndex</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">//event occurs when Delete link is clicked</span><br />
<span class="kw1">void</span> dgCatalog_DeleteCommand<span class="br0">&#40;</span><span class="kw4">object</span> sender, DataGridCommandEventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//delete from DataSet</span><br />
&nbsp; &nbsp; myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span><span class="br0">&#91;</span>e.<span class="me1">Item</span>.<span class="me1">ItemIndex</span><span class="br0">&#93;</span>.<span class="me1">Delete</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="co1">//Write the changes to disk</span><br />
&nbsp; &nbsp; SaveData<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="co1">//rebind the data</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">EditItemIndex</span> = <span class="nu0">-1</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
<p>A little complicated is Cancel event. Because we have a button that adds a new row to the dataset and change the text for Update link to &#8220;Insert&#8221;, we must assure that on Cancel event the text for the link is set back to &#8220;Update&#8221;.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//event occurs when Cancel link is clicked</span><br />
<span class="kw1">void</span> dgCatalog_CancelCommand<span class="br0">&#40;</span><span class="kw4">object</span> sender, DataGridCommandEventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//put the link title back to &quot;Update&quot;</span><br />
&nbsp; &nbsp; EditCommandColumn ecc = <span class="br0">&#40;</span>EditCommandColumn<span class="br0">&#41;</span> dgCatalog.<span class="me1">Columns</span><span class="br0">&#91;</span><span class="nu0">6</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; ecc.<span class="me1">UpdateText</span> = <span class="st0">&quot;Update&quot;</span>;</p>
<p>&nbsp; &nbsp; <span class="co1">//reset the selection</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">EditItemIndex</span> = <span class="nu0">-1</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
<p><img src="/andrei/wp-content/datagrid3.jpg"/></p>
<p>The &#8220;Add new row&#8221; button adds non-default functionality to the DataGrid control. A simple DataGrid does not have an event for Add or Insert. We used a trick to do this by adding a blank row to the dataset and then turn that row into edit mode and change the text for Update link to &#8220;Insert&#8221;.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//event occurs when &quot;Add new row&quot; button is pressed</span><br />
<span class="kw1">void</span> btnAdd_Click<span class="br0">&#40;</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//add an extra row to the dataSet</span><br />
&nbsp; &nbsp; InsertEmpty<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="co1">//the new row is the last one in the dataset</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">EditItemIndex</span> = myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span>.<span class="me1">Count</span><span class="nu0">-1</span>;</p>
<p>&nbsp; &nbsp; <span class="co1">//change the update button title to &quot;Insert&quot;</span><br />
&nbsp; &nbsp; EditCommandColumn ecc = <span class="br0">&#40;</span>EditCommandColumn<span class="br0">&#41;</span> dgCatalog.<span class="me1">Columns</span><span class="br0">&#91;</span><span class="nu0">6</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; ecc.<span class="me1">UpdateText</span> = <span class="st0">&quot;Insert&quot;</span>;</p>
<p>&nbsp; &nbsp; <span class="co1">//rebind</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">//procedure that add an empty row to the DataSet</span><br />
<span class="kw1">private</span> <span class="kw1">void</span> InsertEmpty<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//insert a new row at the end of the dataSet</span><br />
&nbsp; &nbsp; myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span>.<span class="me1">InsertAt</span><span class="br0">&#40;</span>myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">NewRow</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span>.<span class="me1">Count</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
<p>We missed one single event: Update. Here&#8217;s the code (it&#8217;s a little complicated due to the duble functionality: Update and Insert:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1">//event occurs when Update or Insert link is clicked</span><br />
<span class="kw1">void</span> dgCatalog_UpdateCommand<span class="br0">&#40;</span><span class="kw4">object</span> sender, DataGridCommandEventArgs e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw5">System</span>.<span class="me1">Data</span>.<span class="me1">DataRow</span> dr;<br />
&nbsp; &nbsp; <span class="co1">//we must use the catch to identify a wrong index</span><br />
&nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//if this event is called from Update</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; dr = myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span><span class="br0">&#91;</span>e.<span class="me1">Item</span>.<span class="me1">ItemIndex</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">catch</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//if the event is called from Insert</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span>.<span class="me1">InsertAt</span><span class="br0">&#40;</span> myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">NewRow</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span>.<span class="me1">Count</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; dr = myDataSet.<span class="me1">Tables</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Rows</span><span class="br0">&#91;</span>e.<span class="me1">Item</span>.<span class="me1">ItemIndex</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="co1">//pupulate the dataRow cells with the supplied values</span><br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; dr<span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span><span class="br0">&#40;</span>TextBox<span class="br0">&#41;</span> <span class="br0">&#40;</span>e.<span class="me1">Item</span>.<span class="me1">Cells</span><span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span>.<span class="me1">Controls</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">Text</span>;<br />
&nbsp; &nbsp; <span class="co1">//save dataset</span><br />
&nbsp; &nbsp; SaveData<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span class="co1">//put the link title back to &quot;Update&quot;</span><br />
&nbsp; &nbsp; EditCommandColumn ecc = <span class="br0">&#40;</span>EditCommandColumn<span class="br0">&#41;</span> dgCatalog.<span class="me1">Columns</span><span class="br0">&#91;</span><span class="nu0">6</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; ecc.<span class="me1">UpdateText</span> = <span class="st0">&quot;Update&quot;</span>;</p>
<p>&nbsp; &nbsp; <span class="co1">//rebind</span><br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">EditItemIndex</span> = <span class="nu0">-1</span>;<br />
&nbsp; &nbsp; dgCatalog.<span class="me1">DataBind</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
<p>You can download the sources <a href="/andrei/wp-content/xmlDataGrid.zip">here</a><br />
<em>* All this article was written using only Freeware applications: ASP.NET Web Matrix for writing and testing the page, Notepad++ for writing the XML file, Gimp for screenshots. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webxpert.ro/andrei/2006/01/18/aspnet-datagrid-and-xml-as-datasource/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A new version of #develop has been released</title>
		<link>http://www.webxpert.ro/andrei/2005/05/30/a-new-version-of-develop-has-been-released/</link>
		<comments>http://www.webxpert.ro/andrei/2005/05/30/a-new-version-of-develop-has-been-released/#comments</comments>
		<pubDate>Mon, 30 May 2005 07:38:22 +0000</pubDate>
		<dc:creator>andreiash</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.webxpert.ro/andrei/2005/05/30/a-new-version-of-develop-has-been-released/</guid>
		<description><![CDATA[#develop most current build ( 1.1.0.1964 May Beta Refresh, 5/19/2005) is available for download]]></description>
			<content:encoded><![CDATA[<p>#develop (short for SharpDevelop) is a free IDE for C# and VB.NET projects on Microsoft&#8217;s .NET platform. It is open-source (GPL), and you can download both sourcecode and executables from this site. </p>
<p>This new version  ( 1.1.0.1964 May Beta Refresh, 5/19/2005)  has the following features:</p>
<ul>
<li>Command window addin</li>
<li>#report localized</li>
<li>Help 2.0 improvements</li>
<li>Editor fixes (selection issues, freezing)</li>
<li>Web References now async</li>
<li>Updated Mono support</li>
</ul>
<p>Executables are available here: <br /><a href="http://www.sharpdevelop.com/OpenSource/SD/Download/">http://www.sharpdevelop.com/OpenSource/SD/Download/ </a></p>
<p><em><br />
Andrei<br />
<a href="http://www.webxpert.ro">http://www.webxpert.ro</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webxpert.ro/andrei/2005/05/30/a-new-version-of-develop-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET rc2 Encryption class</title>
		<link>http://www.webxpert.ro/andrei/2005/03/28/net-rc2-encryption-class/</link>
		<comments>http://www.webxpert.ro/andrei/2005/03/28/net-rc2-encryption-class/#comments</comments>
		<pubDate>Mon, 28 Mar 2005 20:01:47 +0000</pubDate>
		<dc:creator>andreiash</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.webxpert.ro/andrei/?p=2</guid>
		<description><![CDATA[.NET rc2 Encryption class]]></description>
			<content:encoded><![CDATA[<p>Encryption in .NET Framework is a little tricky&#8230; not just create an object and call Encrypt and Decrypt methods, but terms like <strong>CryptoServiceProvider</strong>, <strong>CipherMode</strong>, <strong>IV</strong> and so on&#8230;Most of the examples that i found on the internet treats file encryption instead of text encryption (which i&#8217;m interested in).<br />
These days i found a very useful article about text encryption written by <em>Chidi C. Ezeukwu</em>. Based on it i wrote a class for encryption/decryption with RC2 algorythm. This class can be used stand-alone in the application or as an assembly. </p>
<p>An archive that contains the VS.NET project for the assembly is available here: <a href='/andrei/wp-content/crypt_assembly.zip' title='.NET rc2 Encryption assembly project'>.NET rc2 Encryption assembly project</a><br />
The compiled DLL assembly zipped is available here: <a href='/andrei/wp-content/crypt_assembly_dll.zip' title='.NET rc2 Encryption DLL assembly '>.NET rc2 Encryption DLL assembly </a></p>
<p>The class code is the following:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">using</span> <span class="kw5">System</span>;<br />
<span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">IO</span>;<br />
<span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Text</span>;<br />
<span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Security</span>.<span class="me1">Cryptography</span>;</p>
<p><span class="kw1">namespace</span> webxpert<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">class</span> wx_crypt<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#region Variables</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">string</span> mKey = <span class="kw4">string</span>.<span class="me1">Empty</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">string</span> mSalt = <span class="kw4">string</span>.<span class="me1">Empty</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> SymmetricAlgorithm mCryptoService;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#endregion</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#region Properties</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">string</span> Key<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> mKey;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mKey = value;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">string</span> Salt<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Salt value</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> mSalt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mSalt = value;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#endregion</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#region Constructor</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> wx_crypt<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mCryptoService = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> RC2CryptoServiceProvider<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mCryptoService.<span class="me1">IV</span> = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span>0xf, 0x6f, 0&#215;13, 0x2e, 0&#215;35, 0xc2, 0xcd, 0xf9<span class="br0">&#125;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mCryptoService.<span class="me1">Mode</span> = CipherMode.<span class="me1">CBC</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#endregion</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#region Methods</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">virtual</span> <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> GetLegalKey<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Adjust key if necessary, and return a valid key</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>mCryptoService.<span class="me1">LegalKeySizes</span>.<span class="me1">Length</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Key sizes in bits</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> keySize = mKey.<span class="me1">Length</span> * <span class="nu0">8</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> minSize = mCryptoService.<span class="me1">LegalKeySizes</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">MinSize</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> maxSize = mCryptoService.<span class="me1">LegalKeySizes</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">MaxSize</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> skipSize = mCryptoService.<span class="me1">LegalKeySizes</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">SkipSize</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>keySize &gt; maxSize<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Extract maximum size allowed</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mKey = mKey.<span class="me1">Substring</span><span class="br0">&#40;</span><span class="nu0">0</span>, maxSize / <span class="nu0">8</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>keySize &lt; maxSize<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Set valid size</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> validSize = <span class="br0">&#40;</span>keySize &lt;= minSize<span class="br0">&#41;</span>? minSize : <span class="br0">&#40;</span>keySize &#8211; keySize % skipSize<span class="br0">&#41;</span> + skipSize;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>keySize &lt; validSize<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Pad the key with asterisk to make up the size</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mKey = mKey.<span class="me1">PadRight</span><span class="br0">&#40;</span>validSize / <span class="nu0">8</span>, <span class="st0">&#8216;*&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PasswordDeriveBytes key = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> PasswordDeriveBytes<span class="br0">&#40;</span>mKey, ASCIIEncoding.<span class="me1">ASCII</span>.<span class="me1">GetBytes</span><span class="br0">&#40;</span>mSalt<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> key.<span class="me1">GetBytes</span><span class="br0">&#40;</span>mKey.<span class="me1">Length</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">virtual</span> <span class="kw4">string</span> Encrypt<span class="br0">&#40;</span><span class="kw4">string</span> plainText<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> plainByte = ASCIIEncoding.<span class="me1">ASCII</span>.<span class="me1">GetBytes</span><span class="br0">&#40;</span>plainText<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> keyByte = GetLegalKey<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Set private key</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mCryptoService.<span class="me1">Key</span> = keyByte;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Encryptor object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ICryptoTransform cryptoTransform = mCryptoService.<span class="me1">CreateEncryptor</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Memory stream object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MemoryStream ms = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> MemoryStream<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Crpto stream object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CryptoStream cs = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> CryptoStream<span class="br0">&#40;</span>ms, cryptoTransform, CryptoStreamMode.<span class="me1">Write</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Write encrypted byte to memory stream</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cs.<span class="me1">Write</span><span class="br0">&#40;</span>plainByte, <span class="nu0">0</span>, plainByte.<span class="me1">Length</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cs.<span class="me1">FlushFinalBlock</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the encrypted byte length</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> cryptoByte = ms.<span class="me1">ToArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Convert into base 64 to enable result to be used in Xml</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> Convert.<span class="me1">ToBase64String</span><span class="br0">&#40;</span>cryptoByte, <span class="nu0">0</span>, cryptoByte.<span class="me1">GetLength</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">virtual</span> <span class="kw4">string</span> Decrypt<span class="br0">&#40;</span><span class="kw4">string</span> cryptoText<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Convert from base 64 string to bytes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> cryptoByte = Convert.<span class="me1">FromBase64String</span><span class="br0">&#40;</span>cryptoText<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">byte</span><span class="br0">&#91;</span><span class="br0">&#93;</span> keyByte = GetLegalKey<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Set private key</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mCryptoService.<span class="me1">Key</span> = keyByte;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Decryptor object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ICryptoTransform cryptoTransform = mCryptoService.<span class="me1">CreateDecryptor</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Memory stream object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MemoryStream ms = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> MemoryStream<span class="br0">&#40;</span>cryptoByte, <span class="nu0">0</span>, cryptoByte.<span class="me1">Length</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Crpto stream object</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CryptoStream cs = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> CryptoStream<span class="br0">&#40;</span>ms, cryptoTransform, CryptoStreamMode.<span class="me1">Read</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the result from the Crypto stream</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; StreamReader sr = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> StreamReader<span class="br0">&#40;</span>cs<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> sr.<span class="me1">ReadToEnd</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">catch</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">null</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">#endregion</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
<p><em><br />
Andrei<br />
<a href="http://www.webxpert.ro">http://www.webxpert.ro</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webxpert.ro/andrei/2005/03/28/net-rc2-encryption-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

