<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://code.msdn.microsoft.com/rss.xsl"?><rss version="2.0"><channel><title>Silverlight MD5 implementation</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Project/ProjectRss.aspx</link><description>An implementation of the MD5 cryptographic hashing algorithm for Silverlight. This class consists of fully transparent C&amp;#35; code, suitable for use in any managed Silverlight application. This class a...</description><item><title>NEW POST: Different results compared to MD5CryptoServiceProvider</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Thread/View.aspx?ThreadId=1715</link><description>&lt;div class="wikidoc"&gt;
Thank you for your bug report. This issue has been fixed in the v2 release, now available. Additionally, v2 adds better stream support for use on large data sets with minimal overhead. Please upgrade to v2 as soon as possible.&lt;br /&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Thu, 04 Jun 2009 20:32:41 GMT</pubDate><guid isPermaLink="false">NEW POST: Different results compared to MD5CryptoServiceProvider 20090604P</guid></item><item><title>CLOSED ISSUE: Bytes more than 56 will get the wrong result</title><link>http://code.msdn.microsoft.com/SilverlightMD5/WorkItem/View.aspx?WorkItemId=1</link><description>code&amp;#58; md5.cs&lt;br /&gt;&lt;br /&gt;in&amp;#58; &amp;#47;&amp;#47;CHUNK IMPLEMENTATION&lt;br /&gt;&lt;br /&gt;when do the copy from input to working, always start from the beginning is wrong&amp;#33;&lt;br /&gt;The correct way is&amp;#58;&lt;br /&gt;&lt;br /&gt;if &amp;#40;i &amp;#61;&amp;#61; chunks&amp;#41;&lt;br /&gt;&amp;#123;...&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, remainder&amp;#41;&amp;#59;&lt;br /&gt; ...&lt;br /&gt;&amp;#125;&lt;br /&gt;else if &amp;#40;&amp;#40;0 &amp;#62; remainder&amp;#41; &amp;#38;&amp;#38; &amp;#40;&amp;#40;i &amp;#43; 1&amp;#41; &amp;#61;&amp;#61; chunks&amp;#41;&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#43;remainder&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;else&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;for those buffer less than 56 Bytes, the wrong code can get the correct result because&amp;#58;&lt;br /&gt;56 &amp;#43; 64 &amp;#43; 8 &amp;#61; 128 &amp;#61; 2 &amp;#42; 64&lt;br /&gt;&lt;br /&gt;Comments: Bug has been fixed in Silverlight MD5 v2. Please see the downloads tab for the fixed code.</description><author>ReidB</author><pubDate>Thu, 04 Jun 2009 20:28:36 GMT</pubDate><guid isPermaLink="false">CLOSED ISSUE: Bytes more than 56 will get the wrong result 20090604P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation v1 (Nov 18, 2008)</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=1823</link><description></description><author></author><pubDate>Thu, 04 Jun 2009 20:27:41 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation v1 (Nov 18, 2008) 20090604P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation v2 (Jun 04, 2009)</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=2206</link><description></description><author></author><pubDate>Thu, 04 Jun 2009 20:27:22 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation v2 (Jun 04, 2009) 20090604P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation v2</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=2206</link><description></description><author></author><pubDate>Thu, 04 Jun 2009 20:26:43 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation v2 20090604P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation v2</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=2206</link><description></description><author></author><pubDate>Thu, 04 Jun 2009 20:26:28 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation v2 20090604P</guid></item><item><title>NEW POST: Different results compared to MD5CryptoServiceProvider</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Thread/View.aspx?ThreadId=1715</link><description>&lt;div class="wikidoc"&gt;
On the home page, &lt;b&gt;carstenh&lt;/b&gt; asserted that this implementation has a bug. I've duplicated those results. &lt;br /&gt; &lt;br /&gt;It seems like there might be a problem when the length of hashed data reaches 120 bytes. In my tests, hashes up to that length are the same as those produced by MD5CryptoServiceProvider, but longer ones started to be different.&lt;br /&gt;
&lt;/div&gt;</description><author>EricSmith</author><pubDate>Tue, 12 May 2009 18:10:40 GMT</pubDate><guid isPermaLink="false">NEW POST: Different results compared to MD5CryptoServiceProvider 20090512P</guid></item><item><title>COMMENTED ISSUE: Bytes more than 56 will get the wrong result</title><link>http://code.msdn.microsoft.com/SilverlightMD5/WorkItem/View.aspx?WorkItemId=1</link><description>code&amp;#58; md5.cs&lt;br /&gt;&lt;br /&gt;in&amp;#58; &amp;#47;&amp;#47;CHUNK IMPLEMENTATION&lt;br /&gt;&lt;br /&gt;when do the copy from input to working, always start from the beginning is wrong&amp;#33;&lt;br /&gt;The correct way is&amp;#58;&lt;br /&gt;&lt;br /&gt;if &amp;#40;i &amp;#61;&amp;#61; chunks&amp;#41;&lt;br /&gt;&amp;#123;...&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, remainder&amp;#41;&amp;#59;&lt;br /&gt; ...&lt;br /&gt;&amp;#125;&lt;br /&gt;else if &amp;#40;&amp;#40;0 &amp;#62; remainder&amp;#41; &amp;#38;&amp;#38; &amp;#40;&amp;#40;i &amp;#43; 1&amp;#41; &amp;#61;&amp;#61; chunks&amp;#41;&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#43;remainder&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;else&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;for those buffer less than 56 Bytes, the wrong code can get the correct result because&amp;#58;&lt;br /&gt;56 &amp;#43; 64 &amp;#43; 8 &amp;#61; 128 &amp;#61; 2 &amp;#42; 64&lt;br /&gt;&lt;br /&gt;Comments: Thank you for this fix. I just spent a couple hours tracking this down myself, guess I should have checked here first &amp;#58;&amp;#41;</description><author>KeithKoons</author><pubDate>Fri, 06 Mar 2009 19:47:00 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Bytes more than 56 will get the wrong result 20090306P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation V1 (Nov 18, 2008)</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=1823</link><description></description><author></author><pubDate>Tue, 03 Feb 2009 19:23:13 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation V1 (Nov 18, 2008) 20090203P</guid></item><item><title>UPDATED RELEASE: Silverlight MD5 Implementation V1 (Nov 18, 2008)</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=1823</link><description></description><author></author><pubDate>Tue, 03 Feb 2009 19:22:46 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Silverlight MD5 Implementation V1 (Nov 18, 2008) 20090203P</guid></item><item><title>EDITED ISSUE: Bytes more than 56 will get the wrong result</title><link>http://code.msdn.microsoft.com/SilverlightMD5/WorkItem/View.aspx?WorkItemId=1</link><description>code&amp;#58; md5.cs&lt;br /&gt;&lt;br /&gt;in&amp;#58; &amp;#47;&amp;#47;CHUNK IMPLEMENTATION&lt;br /&gt;&lt;br /&gt;when do the copy from input to working, always start from the beginning is wrong&amp;#33;&lt;br /&gt;The correct way is&amp;#58;&lt;br /&gt;&lt;br /&gt;if &amp;#40;i &amp;#61;&amp;#61; chunks&amp;#41;&lt;br /&gt;&amp;#123;...&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, remainder&amp;#41;&amp;#59;&lt;br /&gt; ...&lt;br /&gt;&amp;#125;&lt;br /&gt;else if &amp;#40;&amp;#40;0 &amp;#62; remainder&amp;#41; &amp;#38;&amp;#38; &amp;#40;&amp;#40;i &amp;#43; 1&amp;#41; &amp;#61;&amp;#61; chunks&amp;#41;&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#43;remainder&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;else&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;for those buffer less than 56 Bytes, the wrong code can get the correct result because&amp;#58;&lt;br /&gt;56 &amp;#43; 64 &amp;#43; 8 &amp;#61; 128 &amp;#61; 2 &amp;#42; 64&lt;br /&gt;&lt;br /&gt;</description><author>ReidB</author><pubDate>Tue, 03 Feb 2009 19:20:33 GMT</pubDate><guid isPermaLink="false">EDITED ISSUE: Bytes more than 56 will get the wrong result 20090203P</guid></item><item><title>CREATED RELEASE: Silverlight MD5 Implementation V1 .1</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=2206</link><description></description><author></author><pubDate>Tue, 03 Feb 2009 19:19:05 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: Silverlight MD5 Implementation V1 .1 20090203P</guid></item><item><title>CREATED ISSUE: Bytes more than 56 will get the wrong result</title><link>http://code.msdn.microsoft.com/SilverlightMD5/WorkItem/View.aspx?WorkItemId=1</link><description>code&amp;#58; md5.cs&lt;br /&gt;&lt;br /&gt;in&amp;#58; &amp;#47;&amp;#47;CHUNK IMPLEMENTATION&lt;br /&gt;&lt;br /&gt;when do the copy from input to working, always start from the beginning is wrong&amp;#33;&lt;br /&gt;The correct way is&amp;#58;&lt;br /&gt;&lt;br /&gt;if &amp;#40;i &amp;#61;&amp;#61; chunks&amp;#41;&lt;br /&gt;&amp;#123;...&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, remainder&amp;#41;&amp;#59;&lt;br /&gt; ...&lt;br /&gt;&amp;#125;&lt;br /&gt;else if &amp;#40;&amp;#40;0 &amp;#62; remainder&amp;#41; &amp;#38;&amp;#38; &amp;#40;&amp;#40;i &amp;#43; 1&amp;#41; &amp;#61;&amp;#61; chunks&amp;#41;&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#43;remainder&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;else&lt;br /&gt;&amp;#123;&lt;br /&gt;    Buffer.BlockCopy&amp;#40;input, i &amp;#42; 64, working, 0, 64&amp;#41;&amp;#59;&lt;br /&gt;...&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;for those buffer less than 56 Bytes, the wrong code can get the correct result because&amp;#58;&lt;br /&gt;56 &amp;#43; 64 &amp;#43; 8 &amp;#61; 128 &amp;#61; 2 &amp;#42; 64&lt;br /&gt;&lt;br /&gt;</description><author>OneyWang</author><pubDate>Tue, 20 Jan 2009 09:17:06 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Bytes more than 56 will get the wrong result 20090120A</guid></item><item><title>NEW POST: Case of Hash</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Thread/View.aspx?ThreadId=1061</link><description>&lt;div class="wikidoc"&gt;
Unfortunately there is no standard method for returning a hash in ASCII encoded hex. Because this issue isn’t addressed in RFC 1321, I had to make an arbitrary decision as to the best way to represent the stream. Since the default BitConverter will convert a bitstream to ASCII encoding using uppercase characters, so I believed that this behavior would be more expected by users of the .NET runtime.&lt;br /&gt; &lt;br /&gt;Whenever you are comparing two ASCII encoded hashes of different systems, it’s important to normalize the strings before doing comparison because of the lack of standard string representations. For your problem, the following code change will allow you to generate hashes in lower case:&lt;br /&gt; &lt;br /&gt;Substitute all instances of the following:&lt;br /&gt;&lt;pre&gt;
string retval = BitConverter.ToString(GetHash(input));
retval = retval.Replace(&amp;quot;-&amp;quot;, &amp;quot;&amp;quot;);
&lt;/pre&gt;With:&lt;br /&gt;&lt;pre&gt;
string retval = BitConverter.ToString(GetHash(input));
retval = retval.Replace(&amp;quot;-&amp;quot;, &amp;quot;&amp;quot;);
retval = retval.ToLower(CultureInfo.InvariantCulture);
&lt;/pre&gt; &lt;br /&gt;Hope this helps!&lt;br /&gt; &lt;br /&gt;Reid&lt;br /&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Thu, 11 Dec 2008 22:26:19 GMT</pubDate><guid isPermaLink="false">NEW POST: Case of Hash 20081211P</guid></item><item><title>NEW POST: Case of Hash</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Thread/View.aspx?ThreadId=1061</link><description>&lt;div class="wikidoc"&gt;
Shouldn't the MD5 hash be in lower case?&lt;br /&gt; &lt;br /&gt;Currently GetHashString method is returning an uppercase hash, which would obviously fail a string comparison.&lt;br /&gt;
&lt;/div&gt;</description><author>InquisitorJax</author><pubDate>Wed, 10 Dec 2008 12:06:14 GMT</pubDate><guid isPermaLink="false">NEW POST: Case of Hash 20081210P</guid></item><item><title>UPDATED WIKI: MD51Managed()</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=MD51Managed()&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
MD5Managed Constructor
&lt;/h2&gt;Initializes a new instance of the MD5Managed Class.&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public MD5Managed()
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Mon, 08 Dec 2008 23:16:14 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: MD51Managed() 20081208P</guid></item><item><title>UPDATED WIKI: Initialize()</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=Initialize()&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
MD5Managed.Initialize Method ()
&lt;/h2&gt; &lt;br /&gt;Initializes an instance of MD5Managed&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public override void Initialize()
&lt;/pre&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Mon, 08 Dec 2008 23:14:59 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Initialize() 20081208P</guid></item><item><title>UPDATED WIKI: MD5Managed</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=MD5Managed&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
MD5Managed Class
&lt;/h2&gt; &lt;br /&gt;Computes the MD5 hash value for the input data. This class is intended to be used in an object oriented manner. This is similar to the MD5CryptoServiceProvider class in the full .NET runtime, and is suitable for use in the CryptoStream infrastructure.&lt;br /&gt; &lt;br /&gt;Any public &lt;b&gt;static&lt;/b&gt; (&lt;b&gt;Shared&lt;/b&gt; in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
MD5Managed Constructor
&lt;/h4&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Name &lt;/th&gt;&lt;th&gt; Description &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=MD51Managed%28%29&amp;amp;referringTitle=MD5Managed"&gt;MD51Managed()&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Initializes a new instance of MD5Managed&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h4&gt;
MD5Managed Methods
&lt;/h4&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Name &lt;/th&gt;&lt;th&gt; Description &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=Initialize%28%29&amp;amp;referringTitle=MD5Managed"&gt;Initialize()&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Initializes an instance of MD5Managed&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/s02tk69a.aspx" class="externalLink"&gt;ComputeHash(byte[])&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt; Computes the hash value for the specified byte array. (Inherited from HashAlgorithm.)&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/xa627k19.aspx" class="externalLink"&gt;ComputeHash(stream)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt; Computes the hash value for the specified Stream object. (Inherited from HashAlgorithm.)&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/1e59xaaz.aspx" class="externalLink"&gt;ComputeHash(byte[], int, int)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt; Computes the hash value for the specified region of the specified byte array. (Inherited from HashAlgorithm.)&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;HashCore(byte[], int, int)&lt;/td&gt;&lt;td&gt;Routes data written to the object into the MD5Managed hash algorithm for computing the hash. (&lt;i&gt;protected&lt;/i&gt;)&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;HashFinal()&lt;/td&gt;&lt;td&gt;Returns the computed MD5 hash value after all data has been written to the object. (&lt;i&gt;protected&lt;/i&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Mon, 08 Dec 2008 23:05:12 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: MD5Managed 20081208P</guid></item><item><title>UPDATED WIKI: MD5Core</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=MD5Core&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
MD5Core Class
&lt;/h2&gt; &lt;br /&gt;Computes the MD5 hash value for the input data. This function is intended to be used in a static manner, &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=MD5Managed&amp;amp;referringTitle=MD5Core"&gt;MD5Managed&lt;/a&gt; can be used for an instance object.&lt;br /&gt; &lt;br /&gt;This class is thread-safe.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
MD5Core Methods
&lt;/h4&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Name &lt;/th&gt;&lt;th&gt; Description &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHash%28byte%5b%5d%29&amp;amp;referringTitle=MD5Core"&gt;GetHash(byte[])&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified byte array, and returns a byte array. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHash%28string%29&amp;amp;referringTitle=MD5Core"&gt;GetHash(string)&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified string, and returns a byte array. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHash%28string%2c%20Encoding%29&amp;amp;referringTitle=MD5Core"&gt;GetHash(string, Encoding)&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified string using the provided encoding, and returns a byte array. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHashString%28byte%5b%5d%29&amp;amp;referringTitle=MD5Core"&gt;GetHashString(byte[])&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified byte array, and returns a string. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHashString%28string%29&amp;amp;referringTitle=MD5Core"&gt;GetHashString(string)&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified string, and returns a string. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;a href="http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHashString%28string%2c%20Encoding%29&amp;amp;referringTitle=MD5Core"&gt;GetHashString(string, Encoding)&lt;/a&gt; &lt;/td&gt;&lt;td&gt; Computes the hash value for the specified string using the provided encoding, and returns a string. &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; r1(uint, uint, uint, uint, uint, int, uint) &lt;/td&gt;&lt;td&gt; Performs the first round and auxiliary [F()] functions. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; r2(uint, uint, uint, uint, uint, int, uint) &lt;/td&gt;&lt;td&gt; Performs the second round and auxiliary [G()] functions. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; r3(uint, uint, uint, uint, uint, int, uint) &lt;/td&gt;&lt;td&gt; Performs the third round and auxiliary [H()] functions. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; r4(uint, uint, uint, uint, uint, int, uint) &lt;/td&gt;&lt;td&gt; Performs the fourth round and auxiliary [I()] functions. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; LSR(uint, int) &lt;/td&gt;&lt;td&gt; Implements left-shift-and-rotate. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; Converter(byte[]) &lt;/td&gt;&lt;td&gt; Converts an input byte array into an array of uints. (&lt;i&gt;private&lt;/i&gt;) &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Mon, 08 Dec 2008 03:38:47 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: MD5Core 20081208A</guid></item><item><title>UPDATED WIKI: GetHashString(string, Encoding)</title><link>http://code.msdn.microsoft.com/SilverlightMD5/Wiki/View.aspx?title=GetHashString(string, Encoding)&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
MD5Core.GetHashString Method (String, Encoding)
&lt;/h2&gt; &lt;br /&gt;Computes the hash value for the specified string using the provided encoding, and returns the human readable representation of the output.&lt;br /&gt; &lt;br /&gt;&lt;pre&gt;
public static byte[] GetHashString(
     string input,
     Encoding encoding
)
&lt;/pre&gt; &lt;br /&gt;&lt;h4&gt;
Parameters
&lt;/h4&gt;&lt;i&gt;input&lt;/i&gt;&lt;br /&gt;Type: System.String&lt;br /&gt;The input to compute the hash code for. &lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt; The input string is treated as a sequence of bytes. This means differences such as language, capitalization, and even punctuation will result in completely different outputs.&lt;br /&gt; &lt;br /&gt;&lt;i&gt;encoding&lt;/i&gt;&lt;br /&gt;Type: System.Text.Encoder&lt;br /&gt;The encoder to use to decode the input string into a series of bytes.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Return Value
&lt;/h4&gt;Type: System.String&lt;br /&gt;The computed hash code, represented as a string of upper case hexadecimal pairs, for instance &amp;quot;9A06BECFED4DFCC83F66406A1DB1BC6C&amp;quot; in the case of the input &amp;quot;Silverlight&amp;quot;.&lt;br /&gt; &lt;br /&gt;&lt;h5&gt;
Exceptions
&lt;/h5&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Exception &lt;/th&gt;&lt;th&gt; Condition &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; ArgumentNullException &lt;/td&gt;&lt;td&gt; &lt;i&gt;input&lt;/i&gt; or &lt;i&gt;encoding&lt;/i&gt; is a null reference (&lt;b&gt;Nothing&lt;/b&gt; in Visual Basic). &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;</description><author>ReidB</author><pubDate>Mon, 08 Dec 2008 03:38:19 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: GetHashString(string, Encoding) 20081208A</guid></item></channel></rss>