<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jan Keijzer's Weblog</title>
	<atom:link href="http://jankeijzer.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jankeijzer.wordpress.com</link>
	<description>Weblog van Jan Keijzer</description>
	<lastBuildDate>Thu, 10 Nov 2011 10:59:55 +0000</lastBuildDate>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jankeijzer.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Jan Keijzer's Weblog</title>
		<link>http://jankeijzer.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jankeijzer.wordpress.com/osd.xml" title="Jan Keijzer&#039;s Weblog" />
	<atom:link rel='hub' href='http://jankeijzer.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Mooi!</title>
		<link>http://jankeijzer.wordpress.com/2011/02/21/mooi/</link>
		<comments>http://jankeijzer.wordpress.com/2011/02/21/mooi/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:24:36 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Muziek]]></category>

		<guid isPermaLink="false">http://jankeijzer.wordpress.com/?p=284</guid>
		<description><![CDATA[<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=284&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://jankeijzer.wordpress.com/2011/02/21/mooi/"><img src="http://img.youtube.com/vi/HLWQkmwTWsc/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/284/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=284&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2011/02/21/mooi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight: Hoe refereer je een image, die in je XAP-file staat?</title>
		<link>http://jankeijzer.wordpress.com/2010/11/19/silverlight-hoe-refereer-je-een-image-die-in-je-xap-file-staat/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/19/silverlight-hoe-refereer-je-een-image-die-in-je-xap-file-staat/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 15:34:18 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://jankeijzer.wordpress.com/?p=268</guid>
		<description><![CDATA[Af en toe is het nodig om een resource uit je eigen XAP-file te refereren. Er zijn veel voorbeelden te vinden op internet hoe je dat met WPF doet. Maar die werken vaak niet omdat de Assembly.GetName() functie in Silverlight niet werkt (zie referentie hieronder). In Silverlight werkt de volgende methode het beste: Let op [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=268&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Af en toe is het nodig om een resource uit je eigen XAP-file te refereren. Er zijn veel voorbeelden te vinden op internet hoe je dat met WPF doet. Maar die werken vaak niet omdat de Assembly.GetName() functie in Silverlight niet werkt (zie referentie hieronder). In Silverlight werkt de volgende methode het beste:</p>
<p><pre class="brush: css; wrap-lines: false;">
// Get the simple name of the application
string appName = Application.Current.GetType().Assembly.FullName.Split (',') [0];

// Get the string that points to the image file in the subfolder Images
string uriStr = &quot;/&quot; + appName + &quot;;component/Images/&quot; + imageFilename;

// Get the relative URI
Uri uri = new Uri(uriStr, UriKind.Relative);

// Create the ImageSource for the image
ImageSource imgSource = new BitmapImage(uri);
</pre></p>
<p>Let op de &#8220;/&#8221;, waarmee de uriString start.</p>
<p>Referenties:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/y3bk16ya%28VS.95%29.aspx">Assembly.GetName Method op MSDN</a></li>
<li><a href="http://www.dotblogs.com.tw/kan/archive/2009/06/10/8765.aspx">Silverlight 2: Demystifying URI references for app resources</a></li>
<li><a href="http://www.silverlightexamples.net/post/How-to-Get-Files-From-Resources-in-Silverlight-20.aspx">How to Get Files From Resources in Silverlight 2.0</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/268/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=268&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/19/silverlight-hoe-refereer-je-een-image-die-in-je-xap-file-staat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>MVVM en MEF: Verdere verdieping</title>
		<link>http://jankeijzer.wordpress.com/2010/11/16/mvvm-en-mef-verder-verdieping/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/16/mvvm-en-mef-verder-verdieping/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 21:46:31 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Publiek]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[MEF]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">http://aduba.wordpress.com/?p=267</guid>
		<description><![CDATA[Hieronder een lijstje met artikel, die mij meer inzicht gaven in het werken met MEF en MVVM: MVVM &#8211; Bad practice to reference a viewmodel from another viewmodel? Een artikel, waarin duidelijk wordt dat het aanroepen van ViewModels vanuit een &#8220;Master ViewModel&#8221; een van de best pratices van MVVM is. MVVM ViewModel linking to Model [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=267&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hieronder een lijstje met artikel, die mij meer inzicht gaven in het werken met MEF en MVVM:</p>
<ul>
<li><a href="http://forums.silverlight.net/forums/p/166042/377277.aspx" target="_blank">MVVM &#8211; Bad practice to reference a viewmodel from another viewmodel?</a> Een artikel, waarin duidelijk wordt dat het aanroepen van ViewModels vanuit een &#8220;Master ViewModel&#8221; een van de best pratices van MVVM is.</li>
<li><a href="http://forums.silverlight.net/forums/p/80579/189522.aspx" target="_blank">MVVM ViewModel linking to Model</a> Een artikel, waarin duidelijk wordt dat volgens MVVM in principe de gehele interface van het Model herhaald wordt in het ViewModel. Bij een grote interface van misschien wel 50 properties, lijkt dat wel vreemd. Sommigen kiezen er dan ook voor om dan het Model in zijn geheel als property als een Property in het ViewModel te zetten. Volgens wordt dan in de View een binding gemaakt met de individuele property van het Model via Model.Property.</li>
<li><a href="http://msdn.microsoft.com/en-us/magazine/ee291628.aspx" target="_blank">Building Composable Apps in .NET 4 with the Managed Extensibility Framework</a> Een artikel, waarin zeer helder de MEF architectuur stap-voor-stap wordt uitgelegd.</li>
<li><a href="http://http://forums.silverlight.net/forums/p/196861/458221.aspx" target="_blank">MEF and an issue with ViewModels communicating with each other</a> Een artikel, waarin een mooie discussie staat over hoe je ViewModels in ViewModels via MEF het beste kan aanroepen.</li>
</ul>
<p>Verder een mooie serie van <a href="http://codebetter.com/blogs/glenn.block/default.aspx" target="_blank">Glenn Block</a> over het gebruik van MEF in Silverlight 4:</p>
<ul>
<li><a href="http://codebetter.com/blogs/glenn.block/archive/2009/11/30/building-the-hello-mef-dashboard-in-silverlight-4-part-i.aspx" target="_blank">Part I &#8211; Building the Hello MEF Dashboard in Silverlight 4</a></li>
<li><a href="http://codebetter.com/blogs/glenn.block/archive/2009/12/04/building-hello-mef-part-ii-metadata-and-why-being-lazy-is-a-good-thing.aspx" target="_blank">Part II &#8211; Why being lazy is a good thing</a></li>
<li><a href="http://codebetter.com/blogs/glenn.block/archive/2009/12/15/building-hello-mef-part-iii-xap-partitioning-with-the-host-s-permission-and-the-sweetness-of-recomposition.aspx" target="_blank">Part III &#8211; XAP partioning with the host&#8217;s permission and the sweetness of recomposition</a></li>
</ul>
<p>En later nog een mooie serie van <a href="http://csharperimage.jeremylikness.com" target="_blank">Jeremy Likeness</a> over het gebruik van PRISM, MEF en MVVM:</p>
<ul>
<li><a href="http://csharperimage.jeremylikness.com/2009/12/prism-mef-and-mvvm-part-1-of-3-unity.html" target="_blank">PRISM, MEF, and MVVM Part 1 of 3: Unity Glue</a></li>
<li><a href="http://csharperimage.jeremylikness.com/2009/12/prism-mef-and-mvvm-part-2-of-3-making.html" target="_blank">PRISM, MEF, and MVVM Part 2 of 3: Making PRISM MEF Friendly</a></li>
<li><a href="http://csharperimage.jeremylikness.com/" target="_blank">PRISM, MEF, and MVVM Part 3 of 3: Dynamic MEF Modules in PRISM</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=267&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/16/mvvm-en-mef-verder-verdieping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Encryptie met Silverlight en Decryptie met PHP</title>
		<link>http://jankeijzer.wordpress.com/2010/11/12/encryptie-en-decryptie-met-tea/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/12/encryptie-en-decryptie-met-tea/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 15:03:22 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Publiek]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[AES]]></category>
		<category><![CDATA[Rijndael]]></category>
		<category><![CDATA[TEA]]></category>
		<category><![CDATA[XTEA]]></category>

		<guid isPermaLink="false">http://aduba.wordpress.com/?p=244</guid>
		<description><![CDATA[Ik had behoefte aan een manier om strings van Silverlight te encrypten en die met PHP te decrypten. Mijn vraag was hoe doe je dat? In eerste instantie dacht ik dat het nodig was om een encryptie/decryptie algoritme te kiezen en daarvan een versie te hebben voor Silverlight en voor PHP. Daarbij kwam ik op [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=244&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ik had behoefte aan een manier om strings van Silverlight te encrypten en die met PHP te decrypten. Mijn vraag was hoe doe je dat?</p>
<p>In eerste instantie dacht ik dat het nodig was om een encryptie/decryptie algoritme te kiezen en daarvan een versie te hebben voor Silverlight en voor PHP. Daarbij kwam ik op een elegant algoritme uit, dat niet te veel processorkracht nodig had <a href="http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm" target="_blank">het TEA-algoritme</a>. Maar daarmee was het probleem niet direct lekker opgelost. Want je moet dan ook een implementatie hebben. In ons geval aan de server kant een PHP-versie. En aan de client kant het liefst een C# versie. Maar bij het zoeken naar zo&#8217;n implementatie is het erg oppassen geblazen. Want er blijken verschillende varianten van het TEA algoritme te zijn. Een originele versie (TEA), een verbeterde versie (XTEA) en een nogmaals verbeterde versie (XXTEA). Soms is het duidelijk om welke versie het gaat, maar soms moet je het uit de code zelf halen. Bovendien geven sommige implementaties slechts een interface naar ruwe encryptie / decryptie methodes, waarbij je byte-arrays van een lengte van 8 bytes converteert. Om dan strings te kunnen converteren, moet je nog wat extra code maken, die string pad met spaties.</p>
<p>Al met al had ik op basis van een aantal artikelen een C# versie geproduceerd, die compatibel was met een PHP en Javascript implementatie van <a href="http://www.babelfish.nl/Javascript-PHP%20client-server.html">Babelfish.nl</a>. Maar na verschillende mislukte pogingen om de Silverlight zijde met de PHP-zijde te laten praten, heb ik het maar opgegeven om op deze weg verder te gaan.</p>
<p>Volgende stap was om gebruik te maken van algoritmes, die al standaard in Silverlight en PHP zitten. En dan maar hopen dat die algoritmes ook met elkaar willen praten. Dat bleek nog een hele klus. Maar uiteindelijk is het me gelukt om een goed werkend encryptie / decryptie mechanisme te bewerkstelligen tussen Silverlight en PHP. Het algoritme dat ik daarvoor heb gebruikt is <a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard" target="_blank">het AES algoritme</a>. Het artikel, waar ik uiteindelijk de code aan te danken heb was: <a href="http://stackoverflow.com/questions/1161751/php-silverlight-cryptography-chalenge" target="_blank">The PHP-silverlight Cryptography Challenge</a> (hoewel in dat artikel nog een foutje zat met verkeerde lengtes van de key en de initialization vector en, naar zeggen van de auteur, de MD5 hash over het password). Verder heb ik veel hulp gehad van een artikel van Chilkat Software, Inc.:<a href="http://www.chilkatsoft.com/p/php_aes.asp">Understanding PHP AES Encryption</a></p>
<p>Uiteindelijk ziet mijn code er nu als volgt uit:<br />
AesCryptographer.cs<br />
<pre class="brush: css; wrap-lines: false;">
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace Aduba.Cryptography
{
    public class AesCryptographer
    {
        private byte[] mKey = null;
        private byte[] mIV = null;

        public string Key { set { mKey = Encoding.UTF8.GetBytes(value); } }
        public string IV { set { mIV = Encoding.UTF8.GetBytes(value); } }

        public string EncryptAes128(string plainText)
        {
            byte[] data;
            byte[] encryptedData;

            // convert the plain text to a byte array
            data = Encoding.UTF8.GetBytes(plainText);

            // encrypt the plain text
            encryptedData = EncryptAes128(data);

            // convert to Base64 in order to transfer over internet.
            return Convert.ToBase64String(encryptedData);
        }

        public byte[] EncryptAes128(byte[] plainData)
        {
            MemoryStream MStream = new MemoryStream(); // Memory stream to write encrypted data to.
            CryptoStream CryptoStream = null;
            AesManaged A128 = new AesManaged();
            try
            {
                //Create aes128 Encryptor from this instance.
                ICryptoTransform A128Encrypt = A128.CreateEncryptor(mKey, mIV);
                //Create Crypto Stream that transforms memory stream using aes encryption.
                using (CryptoStream = new CryptoStream(MStream, A128Encrypt, CryptoStreamMode.Write))
                {
                    //Write out and flush AES encrypted data to memory stream.
                    CryptoStream.Write(plainData, 0, plainData.Length);
                    CryptoStream.FlushFinalBlock();
                }
                // Return encrypted data.
                return MStream.ToArray();
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                if (CryptoStream != null) { CryptoStream.Close(); };
                if (MStream != null) { MStream.Close(); }
            }
        }

        public byte[] DecryptAes128(byte[] EncryptedByteData)
        {
            MemoryStream MStream = null; // Memory stream to write encrypted data to.
            CryptoStream CryptoStreamDecr = null;
            AesManaged A128 = new AesManaged();
            try
            {
                //Create aes128 instance and Decryptor.
                ICryptoTransform A128Decrypt = A128.CreateDecryptor(mKey, mIV);
                //Create crypto stream set to read and do a AES decryption transform on incoming bytes.
                MStream = new MemoryStream(EncryptedByteData);
                CryptoStreamDecr = new CryptoStream(MStream, A128Decrypt, CryptoStreamMode.Read);
                //Get the decrypted bytes.
                byte[] DestArray = new BinaryReader(CryptoStreamDecr).ReadBytes((int)MStream.Length * 2);
                //Return decrypted data.
                return DestArray;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                if (MStream != null) { MStream.Close(); }
            }
        }

    }
}
</pre></p>
<p>En de PHP-code voor de decryptie:<br />
<pre class="brush: php;">
function aes128cbcDecrypt($key, $encrypted_text, $iv) {
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    mcrypt_generic_init($td, $key, $iv);
    $decrypted = mdecrypt_generic($td, $encrypted_text);
    $decrypted = removePadding($decrypted);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return trim($decrypted);
}

function removePadding($text) {
    $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $packing = ord($text{strlen($text) - 1});
    if ($packing and ($packing &lt; $block)) {
        for ($P = strlen($text) - 1; $P &gt;= strlen($text) - $packing; $P--) {
            if (ord($text{$P}) != $packing) {
                $packing = 0;
            }
        }
    }
    return substr($text, 0, strlen($text) - $packing);
}
</pre></p>
<p>Deze decryptie functie wordt aangeroepen door:<br />
<pre class="brush: php;">
$encryptedData = $_REQUEST['Cipher'];
$data = base64_decode($encryptedData);
$plainText = aes128cbcDecrypt($key, $data, $iv);
</pre></p>
<p>Een volledige PHP AES Klasse is te vinden via de volgende link:<br />
<a href="http://www.phpclasses.org/browse/file/23124.html" target="_blank">http://www.phpclasses.org/browse/file/23124.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=244&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/12/encryptie-en-decryptie-met-tea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>iTunes opstarten met het Logitech Internet 350 Keyboard</title>
		<link>http://jankeijzer.wordpress.com/2010/11/11/itunes-opstarten-met-het-logitech-internet-350-keyboard/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/11/itunes-opstarten-met-het-logitech-internet-350-keyboard/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 10:06:48 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Geen categorie]]></category>
		<category><![CDATA[AppKey]]></category>
		<category><![CDATA[iTunes]]></category>

		<guid isPermaLink="false">http://jankeijzerprive.wordpress.com/?p=78</guid>
		<description><![CDATA[Ik wilde vandaag eens iTunes opstarten met de op de Logitech Internet 350 Keyboard aanwezige Multimedia knop. Dit bleek toch meteen weer een echte zoektocht. Uiteindelijk erachter gekomen dat het wel te doen is en dat er een aantal leuke mogelijkheden zijn als je ook nog sciprts gebruikt voor de iTunes Application. In het kort [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=164&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ik wilde vandaag eens iTunes opstarten met de op de Logitech Internet 350 Keyboard aanwezige Multimedia knop. Dit bleek toch meteen weer een echte zoektocht. Uiteindelijk erachter gekomen dat het wel te doen is en dat er een aantal leuke mogelijkheden zijn als je ook nog sciprts gebruikt voor de iTunes Application.</p>
<p>In het kort komt het op het volgende neer.</p>
<p>Het keyboard stuur bij het indrukken van een knop een code naar de PC. Deze code kan de Windows Explorer dan interpreteren naar een op te starten programma of associëren met een filetype. Welke codes met programma of filetype is geassocieerd staat in het Register onder de volgende Key:</p>
<p><code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\[KeyName]</code></p>
<p>Onder de Key [KeyName] staat een nummer, dat is geassocieerd met een actie. In de volgende tabel staan de nummers met hun vertaling:</p>
<table border="0">
<tbody>
<tr>
<th>KeyName</th>
<th>Commando</th>
<th>Keyboard Button</th>
</tr>
<tr>
<td>16</td>
<td>APPCOMMAND_LAUNCH_MEDIA_SELECT</td>
<td>Media player</td>
</tr>
<tr>
<td>15</td>
<td>APPCOMMAND_LAUNCH_MAIL</td>
<td>Mail</td>
</tr>
<tr>
<td>8</td>
<td>APPCOMMAND_BROWSER_HOME</td>
<td>Browser</td>
</tr>
<tr>
<td>18</td>
<td>APPCOMMAND_LAUNCH_APP2</td>
<td>Calculator</td>
</tr>
<tr>
<td>14</td>
<td>APPCOMMAND_MEDIA_PLAY_PAUSE</td>
<td>Play/Pause</td>
</tr>
<tr>
<td>9</td>
<td>APPCOMMAND_VOLUME_DOWN</td>
<td>Volume down</td>
</tr>
<tr>
<td>10</td>
<td>APPCOMMAND_VOLUME_UP</td>
<td>Volume down</td>
</tr>
<tr>
<td>8</td>
<td>APPCOMMAND_VOLUME_MUTE</td>
<td>Mute</td>
</tr>
</tbody>
</table>
<p>Vervolgens kun je onder een Key ofwel een Association of een ShellExecute script aanmaken. In principe kan je om iTunes dan onder de MediaPlayer knop te stoppen, gewoon een ShellExecute key maken, die de iTunes applicatie gewoon opstart. Maar het is leuker als iTunes dan direct gaat spelen. Daarvoor zijn er scripts te vinden, die je dat makkelijker maken. Met die scripts kan je trouwens nog veel meer leuke dingen vanaf een commando line (of met de ShellExecutor) doen. Al met al krijg je dan een aantal Register Keys, die je tezamen in een Registration File (met de standaard extensie <code>.reg</code>)</p>
<p><pre class="brush: plain;">
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\15]
&quot;Association&quot;=&quot;mailto&quot;

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\16]
&quot;ShellExecute&quot;=&quot;\&quot;C:\\Program Files (x86)\\iTunes\\Scripts\\Play.vbs\&quot;&quot;

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\17]
&quot;ShellExecute&quot;=&quot;::{20D04FE0-3AEA-1069-A2D8-08002B30309D}&quot;

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\18]
&quot;ShellExecute&quot;=&quot;calc.exe&quot;

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\7]
&quot;Association&quot;=&quot;http&quot;

</pre></p>
<p>Referenties, die ik bij dit artikel heb gebruikt:</p>
<ul>
<li><a href="http://blog.riff.org/2006_12_24_customizing_the_internet_keyboard_350_multimedia_player_key" target="_blank">Customizing the Internet Keyboard 350 multimedia player key</a></li>
<li><a href="http://maximized.com/freeware/scriptsforitunes/default.asp" target="_blank">Control iTunes for Windows with this collection of scripts!</a></li>
<li><a href="http://www.windowskb.com/Uwe/Forum.aspx/windows-xp-customize/19657/List-of-keys-for-the-Explorer-AppKey-registry-keys" target="_blank">List of keys for the &#8230;\Explorer\AppKey registry keys?</a></li>
<li><a href="http://groups.google.com/group/microsoft.public.fr.windowsxp/msg/ef076bdbd86f12b1?pli=1" target="_blank">http://groups.google.com/group/microsoft.public.fr.windowsxp/msg/ef076bdbd86f12b1?pli=1</a></li>
</ul>
<p>Een meer volledige lijst van KeyName / Commando paren staat hieronder. Let op: het Logitech Internet 350 Keyboard heeft echter slechts de bovengenoemde 8 knoppen, dus de andere Commando&#8217;s kunnen op dat keyboard niet met 1 knop worden uitgevoerd.</p>
<table>
<tbody>
<tr>
<th>KeyName</th>
<th>Commando</th>
</tr>
<tr>
<td>1</td>
<td>Back (Internet browser)</td>
</tr>
<tr>
<td>2</td>
<td>Forward (Internet browser)</td>
</tr>
<tr>
<td>3</td>
<td>Refresh (Internet browser)</td>
</tr>
<tr>
<td>4</td>
<td>Stop (Internet browser)</td>
</tr>
<tr>
<td>5</td>
<td>Search</td>
</tr>
<tr>
<td>6</td>
<td>Favorites</td>
</tr>
<tr>
<td>7</td>
<td>WebHome</td>
</tr>
<tr>
<td>8</td>
<td>Mute volume</td>
</tr>
<tr>
<td>15</td>
<td>Mail</td>
</tr>
<tr>
<td>16</td>
<td>Media</td>
</tr>
<tr>
<td>17</td>
<td>My Computer</td>
</tr>
<tr>
<td>18</td>
<td>Calculato</td>
</tr>
<tr>
<td>24</td>
<td>Mute microphone</td>
</tr>
<tr>
<td>25</td>
<td>Lower microphone volume</td>
</tr>
<tr>
<td>26</td>
<td>Raise microphone volume</td>
</tr>
<tr>
<td>27</td>
<td>Help</td>
</tr>
<tr>
<td>28</td>
<td>Find</td>
</tr>
<tr>
<td>29</td>
<td>New</td>
</tr>
<tr>
<td>30</td>
<td>Open</td>
</tr>
<tr>
<td>31</td>
<td>Close</td>
</tr>
<tr>
<td>32</td>
<td>Save</td>
</tr>
<tr>
<td>33</td>
<td>Print</td>
</tr>
<tr>
<td>34</td>
<td>Undo</td>
</tr>
<tr>
<td>35</td>
<td>Redo</td>
</tr>
<tr>
<td>36</td>
<td>Copy</td>
</tr>
<tr>
<td>37</td>
<td>Cut</td>
</tr>
<tr>
<td>38</td>
<td>Paste</td>
</tr>
<tr>
<td>39</td>
<td>Reply</td>
</tr>
<tr>
<td>40</td>
<td>Forward (mail)</td>
</tr>
<tr>
<td>41</td>
<td>Send</td>
</tr>
<tr>
<td>42</td>
<td>Spelling checker</td>
</tr>
<tr>
<td>43</td>
<td>Toggle dictation and command/control</td>
</tr>
<tr>
<td>44</td>
<td>Toggle microphone</td>
</tr>
<tr>
<td>45</td>
<td>Corrections</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=164&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/11/itunes-opstarten-met-het-logitech-internet-350-keyboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Cursus MVVM / MEF / SOLID voor Silverlight</title>
		<link>http://jankeijzer.wordpress.com/2010/11/09/cursus-mvvm-voor-silverlight/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/09/cursus-mvvm-voor-silverlight/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 12:07:06 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Publiek]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[IDataErrorInfo]]></category>
		<category><![CDATA[INotifyChanged]]></category>
		<category><![CDATA[INotifyDataErrorInfo]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">http://aduba.wordpress.com/?p=234</guid>
		<description><![CDATA[Op mijn zoektocht naar hoe je goed kan omgaan met de INotifyChanged interface, kwam ik een heel interessant artikel met de titel tegen waarin MVVM en MEF werden uitgelegd. Dat gaf mij aanleiding om hier verder op in te gaan en er mee te experimenteren. Daarbij kwam ik nog een aantal interessante artikelen tegen. Al [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=234&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Op mijn zoektocht naar hoe je goed kan omgaan met de INotifyChanged interface, kwam ik een heel interessant artikel met de titel tegen waarin MVVM en MEF werden uitgelegd. Dat gaf mij aanleiding om hier verder op in te gaan en er mee te experimenteren. Daarbij kwam ik nog een aantal interessante artikelen tegen. Al met al ben ik hierdoor steeds meer enthousiast geworden om hiermee verder te gaan. En daarom wil ik dat in dit artikel een beetje vastleggen als een soort referentie voor in de toekomst.</p>
<p>Allereerst een aantal definities:</p>
<table>
<tbody>
<tr>
<th>Afkorting</th>
<th>Definitie</th>
<th>Uitleg</th>
</tr>
<tr>
<td><a href="http://en.wikipedia.org/wiki/MVVM" target="_blank">MVVM</a></td>
<td><strong>M</strong>odel <strong>V</strong>iew <strong>V</strong>iew<strong>M</strong>odel</td>
<td>Een architectuur, waarin het model, de view en een zogenaamde ViewModel van elkaar gescheiden zijn</td>
</tr>
<tr>
<td><a href="http://en.wikipedia.org/wiki/Managed_Extensibility_Framework" target="_blank">MEF</a></td>
<td><strong>M</strong>anaged <strong>E</strong>xtensibility <strong>F</strong>ramework</td>
<td>Dit raamwerk verzorgt het detecteren van componenten en het vervolgens samenstellen van die componenten</td>
</tr>
<tr>
<td><a href="http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29" target="_blank">SOLID</a></td>
<td><strong>S</strong>ingle responsibility, <strong>O</strong>pen-closed, <strong>L</strong>iskov substitution, <strong>I</strong>nterface segregation and <strong>D</strong>ependency inversion</td>
<td>Een samenstelsel van een vijftal basis principe voor een goed OO design en goede OO programmeertechnieken</td>
</tr>
</tbody>
</table>
<ul>
<li><a href="http://www.arrangeactassert.com/how-to-refactor-and-build-better-microsoft-silverlight-applications/" target="_blank">&#8220;How to refractor and build better Microsoft Silverlight applications&#8221;</a> van Jag Reehal. Een artikel, dat aan de hand van een Calculator voorbeeld stap-voor-stap deze applicatie langs de lijnen van MVVM, MEF en SOLID opbreekt in componenten. Zeer helder beschreven en uitgelegd.</li>
<li><a href="http://www.davidezordan.net/blog/?p=1576" target="_blank">First experiments using MEF, MVVM and Silverlight 4 Beta</a> van Davide Zordan. Een artikel, waarin de Silverlight MVVM en MEF architectuur ook stap-voor-stap worden toegepast. Iets minder duidelijk beschreven, maar wel met een aantal extra details zoals over de CreationPolicy.</li>
<li><a href="http://mef.codeplex.com/" target="_blank">MEF community site</a> op CodePlex. </li>
<li><a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" target="_blank">WPF Apps With The Model-View-ViewModel Design Pattern.</a> Een zeer helder en uitgebreide handleiding over het gebruik van de MVVM architectuur in WFP applicaties.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=234&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/09/cursus-mvvm-voor-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Veilige login: hoe doe je dat?</title>
		<link>http://jankeijzer.wordpress.com/2010/11/08/veilige-login-hoe-doe-je-dat/</link>
		<comments>http://jankeijzer.wordpress.com/2010/11/08/veilige-login-hoe-doe-je-dat/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 19:45:22 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Datacommunicatie]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Publiek]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://aduba.wordpress.com/?p=219</guid>
		<description><![CDATA[Nu ik zover ben dat ik een inlog-scherm heb, wil ik ook graag een veilige manier om de login te laten plaatsvinden. En dat over een &#8220;gewone&#8221; HTTP verbinding, want ons huidig serverabonnement bij CSV-networks biedt geen mogelijkheid voor SSL (en dus ok niet voor HTTPS-certificaten). Daarvoor zouden we een eigen IP-adres moeten krijgen. En [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=219&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nu ik zover ben dat ik een inlog-scherm heb, wil ik ook graag een veilige manier om de login te laten plaatsvinden. En dat over een &#8220;gewone&#8221; HTTP verbinding, want ons huidig serverabonnement bij CSV-networks biedt geen mogelijkheid voor SSL (en dus ok niet voor HTTPS-certificaten). Daarvoor zouden we een eigen IP-adres moeten krijgen. En die kost (op dit moment) 14.50 euro per jaar extra. Gaan we nu even niet doen.</p>
<h3>Simpele login voorbeelden</h3>
<p>Daarom gekeken of er een andere manier is om veilig te kunnen inloggen. Nou, dat is toch nog best wel lastig. Er zijn wel allerlei login voorbeelden op internet te vinden, maar de meeste voorbeelden sturen of &#8220;plain-text&#8221; passwords van de client naar de server of (als er iets meer aan veiligheid wordt gedacht) MD5-gehashde passwords. Dat zijn toch geen veilige manieren om in te loggen, want iedereen, die kan sniffen, kan op die manier gewoon op het systeem komen. Een lijstje van deze oplossingen:</p>
<ul>
<li><a href="http://www.phpeasystep.com/workshopview.php?id=6" target="_blank">PHP Login script tutorial</a>. Een simpele oplossing met ver sturen van passwords in plain text</li>
<li><a href="http://www.tutorialtastic.co.uk/tutorial/creating_a_secure_php_login_page" target="_blank">Creating a Secure PHP Login Page</a>. Een iets veiligere oplossing met een randomword als een Salt</li>
<li><a href="http://weblogs.asp.net/psheriff/archive/2009/10/27/create-a-login-window-in-wpf.aspx" target="_blank">Create a Login Window in WPF</a>. Een voorbeeld van een vrij leuke layout van een loginscherm</li>
<li><a href="http://www.evolt.org/node/60265" target="_blank">PHP Login Script with Remember Me Feature</a>. Een geheel uitgewerkt PHP login-script met een Remember Me functie</li>
</ul>
<h3>Veilige manier van inloggen</h3>
<p>Na wat extra zoekwerk stuitte ik op de volgende pagina: <a href="http://marakana.com/blog/examples/php-implementing-secure-login-with-php-javascript-and-sessions-without-ssl.html" target="_blank">PHP &#8211; Implementing Secure Login with PHP, JavaScript, and Sessions (without SSL)</a>. Een pagina, die vrij helder een Challenge-Response Authenticatie mechanisme beschrijft met PHP. Alleen wordt er ook een Javascript meegestuurd en dat wil ik natuurlijk niet. Dat zal door de Silverlight client moeten gebeuren. Maar goed, het principe zou ik wel kunnen gebruiken. Maar het grootste probleem met dit voorbeeld was dat dit voorbeeld alleen werkt als de passwords als &#8220;plain-text&#8221; in de database staan. Dat is wat ik ook niet wil. Maar daar is ook nog een oplossing voor. Die staat vermeldt in 1 van de commentaren. En is ook erg goed verwoordt in een artikel, waarin in dat commentaar naar wordt verwezen: <a href="http://www.developerfusion.com/article/4679/you-want-salt-with-that/4/" target="_blank">You Want Salt With That?</a>. Hierin wordt een Challenge-Response with Salt mechanisme besproken. Dat lijkt mij voor onze login de mooiste oplossing. Natuurlijk kan het altijd veiliger, maar deze methode is voor ons veilig genoeg. Dus nu aan de slag.</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=219&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2010/11/08/veilige-login-hoe-doe-je-dat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Onze nieuwe website is live!</title>
		<link>http://jankeijzer.wordpress.com/2009/10/05/onze-nieuwe-website-is-live/</link>
		<comments>http://jankeijzer.wordpress.com/2009/10/05/onze-nieuwe-website-is-live/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:41:23 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Bedrijf]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://jankeijzer.wordpress.com/?p=59</guid>
		<description><![CDATA[Vandaag hebben we onze nieuwe website live gezet. Een mooi nieuw design van onze vormgever: Rellebel Reclame. En we hebben ook flink aan de teksten geschreven. Ik ben er wel trots op. Maar een website is natuurlijk nooit af. Dus wie weet hoe onze site er over pakweg een maand of een jaar eruit ziet? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=59&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vandaag hebben we onze nieuwe <a title="Aduba Innovation Support Home Page" href="http://www.aduba.nl" target="_blank">website</a> live gezet. Een mooi nieuw design van onze vormgever: <a title="Rellebel Reclame" href="http://www.rellebel.nl" target="_blank">Rellebel Reclame</a>. En we hebben ook flink aan de teksten geschreven. Ik ben er wel trots op. Maar een website is natuurlijk nooit af. Dus wie weet hoe onze site er over pakweg een maand of een jaar eruit ziet? In ieder geval kunnen we nu weer een tijdje vooruit nu we ook onze website in de nieuwe huisstijl hebben gezet.</p>
<p>Trouwens. De foto&#8217;s van mij en Rogier op onze &#8220;<a title="Over ons op Aduba.nl" href="http://www.aduba.nl/cms/over-ons.html" target="_blank">over ons</a>&#8221; pagina zijn gemaakt door Jacqueline Louter van <a title="jaXpiX website" href="http://www.jaxpix.nl" target="_blank">jaXpiX</a>. Ook erg professioneel gedaan.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=59&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2009/10/05/onze-nieuwe-website-is-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>NCSI &#8211; Sociale Innovatie werkt!</title>
		<link>http://jankeijzer.wordpress.com/2009/10/04/ncsi-sociale-innovatie/</link>
		<comments>http://jankeijzer.wordpress.com/2009/10/04/ncsi-sociale-innovatie/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 15:36:35 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Arbeidsproductiviteit]]></category>
		<category><![CDATA[Innovatie]]></category>
		<category><![CDATA[Personeel]]></category>

		<guid isPermaLink="false">http://jankeijzer.wordpress.com/?p=54</guid>
		<description><![CDATA[Afgelopen week contact gehad met het NCSI, het Nederlands Centrum voor Sociale Innovatie. Een erg inspirerend gesprek. Eindelijk een organisatie, die inziet dat innovatie niet alleen om technologie gaat. Maar dat mensen/ het personeel de motor achter vernieuwingen zijn. Ze ondersteunen een aantal leuke projecten, zoals een project waarbij medewerkers worden gestimuleerd om zelf roosters [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=54&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Afgelopen week contact gehad met het NCSI, het Nederlands Centrum voor Sociale Innovatie. Een erg inspirerend gesprek. Eindelijk een organisatie, die inziet dat innovatie niet alleen om technologie gaat. Maar dat mensen/ het personeel de motor achter vernieuwingen zijn. Ze ondersteunen een aantal leuke projecten, zoals een project waarbij medewerkers worden gestimuleerd om zelf roosters te maken. Dit in plaats van dat het roosters &#8220;van bovenaf&#8221; worden opgelegd. Daarmee is het voor de medewerkers veel makkelijker om hun rooster af te stemmen op hun eigen privé-leven. En het blijkt dat het ook nog eens tot een hogere productiviteit leidt. Prachtig om te merken dat het stimuleren van individuele verantwoordelijkheid van medewerkers daadwerkelijk tot betere prestaties van het personeel leidt.</p>
<p>Dit past tot heel erg in wat wij voorstaan met onze workshops. Laat medewerkers vooral zelf ontdekken hoe ze hun taak het beste kunnen uitvoeren. Er is zoveel kennis en ervaring op de werkvloer aanwezig. Het is echt zonde om die niet te benutten. En uiteindelijk zal dat toch de manier moeten zijn om de arbeidsproductiviteit in Nederland te verhogen. Naast alle technologische verbeteringen, die natuurlijk ook voor een hogere productiviteit kunnen zorgen. Maar laten we wel beide kanten, de techniek en de mens, in de innovatie meenemen. Fijn dat het NCSI hier een stimulans aan wil geven!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=54&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2009/10/04/ncsi-sociale-innovatie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Wave &#8211; Echt samenwerken?</title>
		<link>http://jankeijzer.wordpress.com/2009/10/04/google-wave-echt-samenwerken/</link>
		<comments>http://jankeijzer.wordpress.com/2009/10/04/google-wave-echt-samenwerken/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 15:15:24 +0000</pubDate>
		<dc:creator>Jan Keijzer</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Software tools]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://jankeijzer.wordpress.com/?p=49</guid>
		<description><![CDATA[Vandaag Google Wave ontdekt via DutchCowboys. Wat een mooie omgeving lijkt dit te zijn als je de instructie-video bekijkt. Ik kan mij voorstellen dat je op deze manier met een team medewerkers, heel eenvoudig samen kan. Zeker als je niet allemaal vanuit dezelfde locatie werkt. Maar zelfs ook als dat wel zo is, maar je [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=49&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vandaag Google Wave ontdekt via <a title="Uitrol Google Wave gestart" href="http://www.dutchcowboys.nl/online/18007" target="_blank">DutchCowboys</a>. Wat een mooie omgeving lijkt dit te zijn als je de <a title="Instructie video van Google Wave" href="http://wave.google.com/help/wave/about.html" target="_blank">instructie-video</a> bekijkt. Ik kan mij voorstellen dat je op deze manier met een team medewerkers, heel eenvoudig samen kan. Zeker als je niet allemaal vanuit dezelfde locatie werkt. Maar zelfs ook als dat wel zo is, maar je bijvoorbeeld gezamenlijk een document wilt maken. Of je in een creatief proces wil bijhouden hoe een werkstuk tot stand komt. Ieder kan zijn eigen moment uitkiezen om dat stuk te bewerken. Of opmerkingen plaatsen.</p>
<p>Probleem op dit moment is wel dat het allemaal nog maar te zien is vanuit een marketing-perspectief. Het platform is nog niet openbaar toegankelijk, dus ik heb nog geen &#8220;hands-on&#8221; experience. En ja, dat is toch de lakmoes test. Er zelf mee gaan werken en kijken of het echt nuttig is. Maar op het eerste gezicht spreekt het mij erg aan. Dus even wacht tot half december 2009, de datum die op dit moment rondzingt als datum van de openbare release.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jankeijzer.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jankeijzer.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jankeijzer.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jankeijzer.wordpress.com&amp;blog=4017775&amp;post=49&amp;subd=jankeijzer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jankeijzer.wordpress.com/2009/10/04/google-wave-echt-samenwerken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4ea3cbbe241c1f2728f42350d7fad791?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jan Keijzer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
