<?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>gego.info &#187; C#</title>
	<atom:link href="http://www.gego.info/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gego.info</link>
	<description>gernot's nearly up-to-date blog</description>
	<lastBuildDate>Tue, 31 Jan 2012 08:04:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>CSharp &#8211; Rijndael/AES symetric Encryption and Decryption</title>
		<link>http://www.gego.info/2006/02/02/c-net-rijndaelaes-symetric-encryption-and-decryption/</link>
		<comments>http://www.gego.info/2006/02/02/c-net-rijndaelaes-symetric-encryption-and-decryption/#comments</comments>
		<pubDate>Thu, 02 Feb 2006 16:15:23 +0000</pubDate>
		<dc:creator>gernot</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[it-security]]></category>

		<guid isPermaLink="false">http://www.gego.info/index.php/2006/02/02/c-net-rijndaelaes-symetric-encryption-and-decryption/</guid>
		<description><![CDATA[A short tutorial how to encrypt, respectivelly decrypt a string in C# with Rijndael/AES.]]></description>
			<content:encoded><![CDATA[<p>A short tutorial how to encrypt, respectivelly decrypt a string in C# with Rijndael/AES.</p>
<p>NOTE: The Keygeneration is done in the encryption and decryption methods. For usage in a &#8216;real&#8217; application this should be outsourced.</p>
<h2>Encryption</h2>
<blockquote>
<p><font color="#0000cc">using </font>System.Security.Cryptography;
</p>
</blockquote>
<blockquote>
<p><font color="#336600">// Input Values:<br />
// pwdHash = &#8220;MD5&#8243; / &#8220;SHA1&#8243;<br />
// iv = &#8220;16 ASCII Characters&#8221;<br />
// keySize = 128 / 192 / 256</font><br />
<font color="#0000cc"> public string</font> Encrypt(<font color="#0000cc">string </font>text, <font color="#0000cc">string </font>pwdPhrase, <font color="#0000cc">string </font>pwdSalt, <font color="#0000cc">string </font>pwdHash,<br />
&nbsp;&nbsp;int pwdIterations, <font color="#0000cc">string </font>iv, int keySize)<br />
{<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> ivBytes = <font color="#0099cc">Encoding</font>.ASCII.GetBytes(iv);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> pwdSaltBytes = <font color="#0099cc">Encoding</font>.ASCII.GetBytes(pwdSalt);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> textBytes = <font color="#0099cc">Encoding</font>.UTF8.GetBytes(text);<br />
&nbsp;&nbsp;<font color="#0099cc">PasswordDeriveBytes </font>pwd<br />
&nbsp;&nbsp;&nbsp;&nbsp; = <font color="#0000cc">new </font><font color="#0099cc">PasswordDeriveBytes </font>(pwdPhrase, pwdSaltBytes, pwdHash, pwdIterations);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> keyBytes = pwd.GetBytes( keySize / 8 );<br />
&nbsp;&nbsp;<font color="#0099cc">RijndaelManaged </font>symmKey = <font color="#0000cc">new </font><font color="#0099cc">RijndaelManaged </font>();<br />
&nbsp;&nbsp;symmKey.Mode = <font color="#0099cc">CipherMode</font>.CBC;<br />
&nbsp;&nbsp;<font color="#0099cc">ICryptoTransform </font>enc<br />
&nbsp;&nbsp;&nbsp;&nbsp; = symmKey.CreateEncryptor(keyBytes, ivBytes);<br />
&nbsp;&nbsp;<font color="#0099cc">MemoryStream </font>mem = <font color="#0000cc">new </font><font color="#0099cc">MemoryStream </font>();<br />
&nbsp;&nbsp;<font color="#0099cc">CryptoStream </font>cry<br />
&nbsp;&nbsp;&nbsp;&nbsp; = <font color="#0000cc">new </font><font color="#0099cc">CryptoStream </font>(mem, enc, CryptoStreamMode.Write);<br />
&nbsp;&nbsp;cry.Write(textBytes, 0, textBytes.Length);<br />
&nbsp;&nbsp;cry.FlushFinalBlock();<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> cipBytes = mem.ToArray();<br />
&nbsp;&nbsp;mem.Close();<br />
&nbsp;&nbsp;cry.Close();<br />
&nbsp;&nbsp;<font color="#0000cc">return </font>Convert.ToBase64String(cipBytes);<br />
}</p>
</blockquote>
<h2>Decryption</h2>
<blockquote>
<p><font color="#0000cc">using </font>System.Security.Cryptography;
</p>
</blockquote>
<blockquote>
<p><font color="#336600">// Input Values:<br />
// pwdHash = &#8220;MD5&#8243; / &#8220;SHA1&#8243;<br />
// iv = &#8220;16 ASCII Characters&#8221;<br />
// keySize = 128 / 192 / 256</font><br />
<font color="#0000cc"> public string</font> Decrypt(<font color="#0000cc">string </font>cip, <font color="#0000cc">string </font>pwdPhrase, <font color="#0000cc">string </font>pwdSalt, <font color="#0000cc">string </font>pwdHash,<br />
&nbsp;&nbsp;int pwdIterations, <font color="#0000cc">string </font>iv, int keySize)<br />
{<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> ivBytes = <font color="#0099cc">Encoding</font>.ASCII.GetBytes(iv);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> pwdSaltBytes = <font color="#0099cc">Encoding</font>.ASCII.GetBytes(pwdSalt);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font>cipTextBytes = <font color="#0099cc">Convert</font>.FromBase64String(cip);<br />
&nbsp;&nbsp;<font color="#0099cc">PasswordDeriveBytes </font>pwd<br />
&nbsp;&nbsp;&nbsp;&nbsp; = <font color="#0000cc">new </font><font color="#0099cc">PasswordDeriveBytes </font>(pwdPhrase, pwdSaltBytes, pwdHash, pwdIterations);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> keyBytes = pwd.GetBytes( keySize / 8 );<br />
&nbsp;&nbsp;<font color="#0099cc">RijndaelManaged </font>symmKey = <font color="#0000cc">new </font><font color="#0099cc">RijndaelManaged </font>();<br />
&nbsp;&nbsp;symmKey.Mode = CipherMode.CBC;<br />
&nbsp;&nbsp;<font color="#0099cc">ICryptoTransform </font>dec<br />
&nbsp;&nbsp;&nbsp;&nbsp; = symmKey.CreateDecryptor(keyBytes, ivBytes);<br />
&nbsp;&nbsp;<font color="#0099cc">MemoryStream </font>mem = <font color="#0000cc">new </font><font color="#0099cc">MemoryStream </font>(cipTextBytes);<br />
&nbsp;&nbsp;<font color="#0099cc">CryptoStream </font>cry<br />
&nbsp;&nbsp;&nbsp;&nbsp; = <font color="#0000cc">new </font><font color="#0099cc">CryptoStream </font>(mem, dec, CryptoStreamMode.Read);<br />
&nbsp;&nbsp;<font color="#0000cc">byte[]</font> textBytes = <font color="#0000cc">new </font>byte[cipTextBytes.Length];<br />
&nbsp;&nbsp;<font color="#0000cc">int </font>decByteCount<br />
&nbsp;&nbsp;&nbsp;&nbsp; = cry.Read(textBytes, 0, textBytes.Length);<br />
&nbsp;&nbsp;mem.Close();<br />
&nbsp;&nbsp;cry.Close();<br />
&nbsp;&nbsp;<font color="#0000cc">return </font>Encoding.UTF8.GetString(textBytes, 0, decByteCount);<br />
}</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.gego.info/2006/02/02/c-net-rijndaelaes-symetric-encryption-and-decryption/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS &#8211; Kategorie, was soll das?</title>
		<link>http://www.gego.info/2006/01/25/css-kategorie-was-soll-das/</link>
		<comments>http://www.gego.info/2006/01/25/css-kategorie-was-soll-das/#comments</comments>
		<pubDate>Wed, 25 Jan 2006 10:18:15 +0000</pubDate>
		<dc:creator>gernot</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.gego.info/index.php/2006/01/25/css-kategorie-was-soll-das/</guid>
		<description><![CDATA[Nachdem ich mich seit längerer Zeit ein wenig mit CSS (CascadingStyleSheets) Webseitengestaltung auseinandersetzte und selbst immer alle möglichen Dinge vergesse möchte ich in dieser Rubrik eine kleine Sammlung an nützlichen css Snippets hervortun.]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich mich seit längerer Zeit ein wenig mit CSS (CascadingStyleSheets) Webseitengestaltung auseinandersetzte und selbst immer alle möglichen Dinge vergesse möchte ich in dieser Rubrik eine kleine Sammlung an nützlichen css Snippets hervortun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gego.info/2006/01/25/css-kategorie-was-soll-das/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

