<?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>TylerBurton.ca &#187; hash verifier</title>
	<atom:link href="http://www.tylerburton.ca/tag/hash-verifier/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tylerburton.ca</link>
	<description></description>
	<lastBuildDate>Tue, 10 Jan 2012 04:41:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hash Verifier 0.3.0.1 (Java Web Start)</title>
		<link>http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/</link>
		<comments>http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 23:45:48 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Created by Tyler Burton]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[hash verifier]]></category>
		<category><![CDATA[Java Web Start]]></category>
		<category><![CDATA[SWT]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=451</guid>
		<description><![CDATA[Java Web Start is a technology that allows easy deployment of Java based software through a web browser. The advantages of this framework are numerous but one nice thing is that it allows you far more freedom then the completely sandboxed Java applet. In this post I will detail how I converted my Hash Verifier [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://en.wikipedia.org/wiki/Java_web_start">Java Web Start</a> is a technology that allows easy deployment of Java based software through a web browser. The advantages of this framework are numerous but one nice thing is that it allows you far more freedom then the completely sandboxed Java applet. In this post I will detail how I converted my Hash Verifier application to run right from the browser.</p>
<p><strong>Java Network Launching Protocol (JNLP)</strong></p>
<p>The javax.jnlp libraries provide the functionality needed to launch the application from within a web browser. This is done through the use of a specially crafted XML file called a jnlp file. This file specifies the application information including the location of the executable jar and any class libraries associated with it. The nice thing about this is that it allows you to specify different class files spending on the platform it is being run on. This is exactly what I needed in order to get the correct SWT libraries loaded on the target platform.</p>
<p>As an example of what a jnlp file looks like here is the file I created for my Hash Verifier application:</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;jnlp spec=&#8221;1.0+&#8221; codebase=&#8221;http://www.tylerburton.ca/webstart&#8221; href=&#8221;hv.jnlp&#8221;&gt;<br />
&lt;information&gt;<br />
&lt;title&gt;Hash Verifier&lt;/title&gt;<br />
&lt;vendor&gt;tylerburton.ca&lt;/vendor&gt;<br />
&lt;homepage href=&#8221;http://tylerburton.ca&#8221; /&gt;<br />
&lt;description&gt;A graphical file digest generator&lt;/description&gt;<br />
&lt;description&gt;Hash Verifier&lt;/description&gt;<br />
&lt;/information&gt;</p>
<p>&lt;security&gt;<br />
&lt;all-permissions /&gt;<br />
&lt;/security&gt;</p>
<p>&lt;resources&gt;<br />
&lt;j2se version=&#8221;1.5+&#8221; /&gt;<br />
&lt;jar href=&#8221;HashVerifier.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Windows&#8221; arch=&#8221;x86&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-win32-windows-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Windows&#8221; arch=&#8221;x86_64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-win32-windows-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Windows&#8221; arch=&#8221;amd64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-win32-windows-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;ppc&#8221;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-ppc.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;ppc64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-ppc64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;x86_64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;amd64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;x86&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;i386&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Linux&#8221; arch=&#8221;i686&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-linux-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221; arch=&#8221;x86_64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-cocoa-mac-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221; arch=&#8221;amd64&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-cocoa-mac-x86_64.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221; arch=&#8221;x86&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-cocoa-mac-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221; arch=&#8221;i386&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-cocoa-mac-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221; arch=&#8221;i686&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-cocoa-mac-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;Mac&#8221;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-carbon-mac.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;SunOS&#8221; arch=&#8221;sparc&#8221;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-solaris-sparc.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;resources os=&#8221;SunOS&#8221; arch=&#8221;x86&#8243;&gt;<br />
&lt;jar href=&#8221;http://www.tylerburton.ca/swt/3.6.1/swt-gtk-solaris-x86.jar&#8221; /&gt;<br />
&lt;/resources&gt;</p>
<p>&lt;application-desc main-class=&#8221;ca.tylerburton.hashverifier.HashVerifierMain&#8221; /&gt;</p>
<p>&lt;/jnlp&gt;</p></blockquote>
<p>As you can see I have outlined all of the platform configurations that I am going to be compatible with. Java Web Start takes care of the rest for me automatically.</p>
<p><strong>Digital signatures</strong></p>
<p>The final step is to digitally sign the executable jar. This is required because when deploying an application that is not sandboxed, or one that requires access to low-level functions and libraries (as is the case in SWT), the end user needs to know that the code they are receiving came directly from the source. The easiest way to do this is to follow the <a href="http://eclipse.org/swt/jws/">instructions here</a>. Unfortunately unless you are willing to pay to have your certificate signed by a trusted certificate authority the end user will need to click OK through a big security warning before they can use your program. It&#8217;s a small issue to overcome but if <a href="http://www.minecraft.net/play.jsp" target="_blank">Minecraft</a> can do it without too much of a headache I&#8217;m sure you can too.</p>
<p><strong>Easy deployment</strong></p>
<p>It&#8217;s as simple as that. I didn&#8217;t have to re-write my code, heck I didn&#8217;t even have to adjust a single line and it all just works. To see the result on your platform <a href="http://www.tylerburton.ca/webstart/hv.jnlp">click here</a>. <strong></strong></p>
<p><strong>Note:</strong> unfortunately there is an issue with the Mac version of Java Web Start &amp; SWT that prevents it from working correctly. Until Apple fixes this, or OpenJDK takes over and does it, SWT applications cannot be started correctly on that platform through Web Start.</p>

<a href='http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/webstart1/' title='webstart1'><img width="150" height="150" src="http://www.tylerburton.ca/files/wordpress/2010/10/webstart1-150x150.png" class="attachment-thumbnail" alt="webstart1" title="webstart1" /></a>
<a href='http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/webstart2/' title='webstart2'><img width="150" height="150" src="http://www.tylerburton.ca/files/wordpress/2010/10/webstart2-150x150.png" class="attachment-thumbnail" alt="webstart2" title="webstart2" /></a>
<a href='http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/webstart3/' title='webstart3'><img width="150" height="150" src="http://www.tylerburton.ca/files/wordpress/2010/10/webstart3-150x150.png" class="attachment-thumbnail" alt="webstart3" title="webstart3" /></a>

<div class="shr-publisher-451"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2010/10/hash-verifier-0-3-0-1-java-web-start/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hash Verifier 0.3.0.0 (A.K.A. the SWT re-write)</title>
		<link>http://www.tylerburton.ca/2010/09/hash-verifier-0-3-0-0-a-k-a-the-swt-re-write/</link>
		<comments>http://www.tylerburton.ca/2010/09/hash-verifier-0-3-0-0-a-k-a-the-swt-re-write/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 02:27:29 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Created by Tyler Burton]]></category>
		<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[hash verifier]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SWT]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=387</guid>
		<description><![CDATA[After reading up on how you can use SWT to give Java a more native look and feel I was interested in giving it a shot first hand. I decided to break out old faithful (Hash Verifier) and re-write it completely in Java/SWT. The end result was an application that has essentially equivalent functionality (see below for [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>After reading up on how you can use <a href="http://www.eclipse.org/swt/" target="_blank">SWT</a> to give <a href="http://www.java.com" target="_blank">Java</a> a more <a href="http://www.tylerburton.ca/2010/08/make-java-guis-less-ugly-or-how-i-learned-to-love-swt/" target="_blank">native look and feel</a> I was interested in giving it a shot first hand. I decided to break out old faithful (<a href="http://www.tylerburton.ca/software/" target="_blank">Hash Verifier</a>) and re-write it completely in Java/SWT. The end result was an application that has essentially equivalent functionality (see below for differences) but is completely cross-platform. No matter what operating system you end up running this on (Windows, Mac OSX, Linux) it should have a native look and feel. I will explain how I accomplished this literal &#8220;<strong>write once, run anywhere</strong>&#8221; code below.</p>
<p><strong>Easy deployment</strong></p>
<p>The download consists of three different programs. The first, and main, named <em>HashVerifier.jar</em> is not actually the Hash Verifier program, but rather a simple sequential application launching system that I wrote to make cross-platform deployment even easier. When you run <em>HashVerifier.jar</em>, either by double-clicking on it or by running it from the terminal with <em>java -jar HashVerifier.jar</em>, it opens up the included <em>rules</em> file and begins to execute the lines one after another. If there is a special platform specific file (such as <em>rules.mac</em>) it will run that instead. Let&#8217;s take a look at <em>rules:</em></p>
<p><code>java -jar AdaptiveSWT swt.jar<br />
java -XX:+AggressiveOpts -XX:+UseParallelGC -jar HashVerifierApp</code></p>
<p>As you can see each line is a separate command to be run.</p>
<p><strong>Getting that <em>right</em> look</strong></p>
<p>When <em>HashVerifier.jar</em> starts it reads each line and runs that as a shell command. The line <em>java -jar AdaptiveSWT swt.jar</em> starts the second included program. <em>AdaptiveSWT</em> uses Java&#8217;s built in cross-platform UI toolkit, <a href="http://en.wikipedia.org/wiki/Swing_(Java)" target="_blank">Swing</a>, and displays a small dialog while it downloads the platform&#8217;s native SWT library. This is necessary because otherwise I would need to create separate downloads for each platform, each with their unique native SWT library. By using <em>AdaptiveSWT</em> I can instead let it handle all of the dirty work for me. This is really the trick that lets me release exactly one version of the program that looks correct for everyone. The <em>AdaptiveSWT</em> program is even smart enough to know not to re-download the library if you already have it. That being said if you ever do have an issue where you need to re-download the library either delete the swt.jar file in the program directory or change the first line to <em>java -jar AdaptiveSWT -force swt.jar.</em> This forces the download to happen regardless of it you already have it or not.</p>
<p><strong>Hash Verifier</strong></p>
<p>The next line logically starts the actual Hash Verifier application (with a couple of extra performance enhancing flags passed along as well). This version should work almost identically as the previous with a few key differences:</p>
<ul>
<li>I have removed the <em>Export to Hash File</em> menu option as I simply just didn&#8217;t use it enough to warrant me spending the time to re-develop it.</li>
<li>I have removed the old <em>Help</em> menu option and replaced it with a visit website option.</li>
<li><a href="http://en.wikipedia.org/wiki/RIPEMD" target="_blank">RIPEMD-160</a> has been replaced with <a href="http://en.wikipedia.org/wiki/MD2_(cryptography)" target="_blank">MD2</a>, mostly because that is what the JVM supports &#8220;out-of-the-box&#8221;.</li>
</ul>
<p>That&#8217;s about it. Please let me know if you have any issues running it on your platform of choice.</p>
<p><strong>Requirements</strong></p>
<ul>
<li>OS: Windows, Mac OSX or Linux (Gtk+)</li>
<li>Internet connection</li>
<li>Java JRE (targeted at JavaSE-1.6 but might work on the previous version as well)</li>
</ul>
<p>As before the binary only package contains just the executables, whereas the all package contains the source code as well.</p>
<table border="1">
<tbody>
<tr>
<td></td>
<td><strong>Binary Only Package</strong></td>
<td><strong>All Package</strong></td>
</tr>
<tr>
<td><strong>File name:</strong></td>
<td>hash_verifier_0_3_0_0_binary.zip</td>
<td>hash_verifier_0_3_0_0_all.zip</td>
</tr>
<tr>
<td><strong>File hashes:</strong></td>
<td style="text-align: center;" colspan="2"><a href="http://www.tylerburton.ca/files/hashes/hash_verifier_0_3_0_0.hashes.txt" target="_blank">Download Here</a></td>
</tr>
<tr>
<td><strong>GPG signature:</strong></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_3_0_0_binary.zip.sig">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_3_0_0_all.zip.sig">Download Here</a></td>
</tr>
<tr>
<td><strong>Screenshots:</strong></td>
<td><a href="http://www.tylerburton.ca/files/wordpress/2010/09/hvwindows.jpg"><img class="aligncenter size-thumbnail wp-image-389" title="HashVerifier on Windows" src="http://www.tylerburton.ca/files/wordpress/2010/09/hvwindows-150x150.jpg" alt="" width="150" height="150" /></a></td>
<td><a href="http://www.tylerburton.ca/files/wordpress/2010/09/hvlinux.png"><img class="aligncenter size-thumbnail wp-image-390" title="HashVerifier on Linux" src="http://www.tylerburton.ca/files/wordpress/2010/09/hvlinux-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
<tr>
<td><strong>License:</strong></td>
<td style="text-align: center;" colspan="2">(LGPL) <a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">View Here</a></td>
</tr>
<tr>
<td><strong>Version:</strong></td>
<td style="text-align: center;" colspan="2">0.3.0.0</td>
</tr>
<tr>
<td><strong>File size:</strong></td>
<td>68.6KB</td>
<td>107.1KB</td>
</tr>
<tr>
<td><strong>File download:</strong></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_3_0_0_binary.zip">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_3_0_0_all.zip">Download Here</a></td>
</tr>
</tbody>
</table>
<p><strong>NOTE:</strong> This software was tested on Windows Vista, Mac OS 10.6 and Linux Mint 9. While it may (and should) run on similar platforms I have not been able to test this. Please remember that this software is provided &#8220;as is&#8221; and without any sort of warranty. Use at <strong>your own risk</strong>.</p>
<div class="shr-publisher-387"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2010/09/hash-verifier-0-3-0-0-a-k-a-the-swt-re-write/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hash Verifier 0.2.0.0 Released!</title>
		<link>http://www.tylerburton.ca/2009/12/hash-verifier-0-2-0-0-released/</link>
		<comments>http://www.tylerburton.ca/2009/12/hash-verifier-0-2-0-0-released/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 01:17:08 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Computer security]]></category>
		<category><![CDATA[Created by Tyler Burton]]></category>
		<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[hash verifier]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[tyler burton]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=173</guid>
		<description><![CDATA[That&#8217;s right an update to your favourite hash verification program! This update includes a few new features that some of you might find useful. It also includes help documentation which walks you through how to use it! New Features Menu strip for even easier use Export features allows you to automatically write all of the [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>That&#8217;s right an update to your favourite hash verification program! <img src='http://www.tylerburton.ca/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>This update includes a few new features that some of you might find useful. It also includes help documentation which walks you through how to use it!</p>
<p><strong>New Features</strong></p>
<ul>
<li>Menu strip for even easier use</li>
<li>Export features allows you to automatically write all of the hashes to a single file</li>
<li>About dialog that provides information about the program</li>
<li>Help documentation</li>
</ul>
<p><em>Requirements:</em></p>
<ul>
<li><strong>All platforms:</strong> .NET 2.0+ / Mono, a graphical display</li>
<li><strong>*nix platforms:</strong> WinForms (identified as System.Windows.Forms)</li>
</ul>
<p>As always the binary only package contains just the executable, whereas the all package contains the source code as well.</p>
<table border="1">
<tbody>
<tr>
<td></td>
<td><strong>Binary Only Package</strong></td>
<td><strong>All Package</strong></td>
</tr>
<tr>
<td><strong>File name:</strong></td>
<td>hash_verifier_0_2_0_0_binary.zip</td>
<td>hash_verifier_0_2_0_0_all.zip</td>
</tr>
<tr>
<td><strong>File hashes:</strong></td>
<td style="text-align: center;" colspan="2"><a href="http://www.tylerburton.ca/files/hashes/hash_verifier_0_2_0_0.hashes.txt">Download Here</a></td>
</tr>
<tr>
<td><strong>GPG signature:</strong></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_2_0_0_binary.zip.sig" target="_blank">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_2_0_0_all.zip.sig" target="_blank">Download Here</a></td>
</tr>
<tr>
<td><strong>Screenshots:</strong></td>
<td><a href="http://www.tylerburton.ca/files/wordpress/2009/12/img3.png" target="_blank">Screenshot 1</a></td>
<td><a href="http://www.tylerburton.ca/files/wordpress/2009/12/img4.png" target="_blank">Screenshot 2</a></td>
</tr>
<tr>
<td><strong>License:</strong></td>
<td style="text-align: center;" colspan="2">(LGPL) <a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">View Here</a></td>
</tr>
<tr>
<td><strong>Version:</strong></td>
<td style="text-align: center;" colspan="2">0.2.0.0</td>
</tr>
<tr>
<td><strong>File size:</strong></td>
<td>171.5KB</td>
<td>530.1KB</td>
</tr>
<tr>
<td><strong>File download:</strong></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_2_0_0_binary.zip" target="_blank">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_2_0_0_all.zip" target="_blank">Download Here</a></td>
</tr>
</tbody>
</table>
<div class="shr-publisher-173"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2009/12/hash-verifier-0-2-0-0-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The return of the Hash Verifier</title>
		<link>http://www.tylerburton.ca/2009/11/the-return-of-the-hash-verifier/</link>
		<comments>http://www.tylerburton.ca/2009/11/the-return-of-the-hash-verifier/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 01:26:24 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Created by Tyler Burton]]></category>
		<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[hash verifier]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows.Forms]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=105</guid>
		<description><![CDATA[Some of you may remember an old Windows program of mine called Hash Verifier. It was a graphical utility that allowed people to generate hashes of their files, and then compare those to known hashes, ensuring that their files had not been corrupted. Well in recent months my foray into the world of Linux has [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Some of you may remember an old Windows program of mine called <a href="http://www.tylerburton.ca/2009/09/hash-verifier/" target="_blank">Hash Verifier</a>. It was a graphical utility that allowed people to generate <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" target="_blank">hashes</a> of their files, and then compare those to known hashes, ensuring that their files had not been corrupted. Well in recent months my foray into <a href="http://www.thelinuxexperiment.com" target="_blank">the world of Linux</a> has finally taken me into the realm of programming on that platform. Being primarily a <a href="http://en.wikipedia.org/wiki/.NET_Framework" target="_blank">.NET</a> developer on Windows I have found the <a href="http://mono-project.com/Main_Page" target="_blank">Mono project</a> on Linux to be an absolute breath of fresh air.</p>
<h2>&#8220;Monkey&#8221; project</h2>
<p>The Mono project is an open source implementation of Microsoft&#8217;s .NET common language runtime and a C# compiler. On Linux the easiest way to program in a Mono language is within the project&#8217;s own integrated development environment called <a href="http://en.wikipedia.org/wiki/MonoDevelop" target="_blank">MonoDevelop</a>.</p>
<h2>C is a sharp language</h2>
<p><a href="http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29" target="_blank">C#</a> is a very powerful programming language that falls somewhere between <a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" target="_blank">C</a> and <a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29" target="_blank">Java</a> in terms of syntax. While my experience with C# has been limited in the past, I was easily able to pick it up quickly thanks to my background in both C and Java, as well as fellow .NET language <a href="http://en.wikipedia.org/wiki/Visual_Basic_.NET" target="_blank">Visual Basic</a>.</p>
<h2>The challenge</h2>
<p>Digging up an old .NET project of mine, Hash Verifier, I decided to challenge myself to port the application to Mono. In order to do this I needed to accomplish the following:</p>
<ul>
<li>The original application ran on Microsoft&#8217;s .NET on the Windows platform. The new application must run on both .NET on Windows and Mono on supported platforms.</li>
<li>The original application was written in Visual Basic. The new application must be written in C#.</li>
<li>The original application has a GUI powered by the native Windows.Forms. The new application needs to have a GUI that works in a similar way on all platforms.</li>
<li>The new application must be able to fully re-create all of the old application&#8217;s features and functions.</li>
</ul>
<h2>Porting = easy<span style="text-decoration: underline;"><strong><br />
</strong></span></h2>
<p>I must say that porting this old application to C#/Mono was a relatively straightforward task. Although I had plenty of <a href="http://www.mono-project.com/Gui_Toolkits" target="_blank">GUI toolkits to choose from</a> I ended up sticking with the existing Windows.Forms. Once I had decided on using Windows.Forms as the basis for my GUI (<a href="http://www.mono-project.com/WinForms" target="_blank">WinForms</a> is a free and open source implementation for non-Windows users!) I set out to create my new application. I was literally able to open the old Visual Basic GUI designer file, copy the code into my Mono workspace, change the syntax to C# and voila it worked!</p>
<p>In fact the only tricky part was trying to figure out a compatibility issue that .NET/Mono 2.0 seem to have with the new <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation" target="_blank">Windows Presentation Foundation (WPF)</a>. I&#8217;ll save you the gory details but basically drag and drop functionality would not work. I eventually rectified this issue by including a compiler flag telling .NET/Mono to execute the form in <a href="http://www.csharphelp.com/archives3/archive558.html" target="_blank">single thread apartments</a> mode. You can see where I did this in my code by looking right above my static main function:</p>
<blockquote><p>[STAThreadAttribute]<br />
public static void Main()<br />
{<br />
&#8230;<br />
}</p></blockquote>
<h2>Final result</h2>
<p>With the application complete I must say I am impressed. Crafting and running applications for Mono is extraordinarily simple to do, seems very powerful, and the application itself only takes up a couple of MiB to run. In the future I definitely plan on doing more of this type of development now that I am using different operating systems every day.</p>
<h2>Hash Verifier<span style="text-decoration: underline;"><strong><br />
</strong></span></h2>
<p>If you are <a href="http://www.jonathanfritz.ca/software/automating-command-line-applications-in-visualbasic-dot-net" target="_blank">still</a> <a href="http://www.jonathanfritz.ca/software/opengl-in-visualstudionet-with-the-tao-framework" target="_blank">using</a> the <a href="http://www.jonathanfritz.ca/software/areca-the-open-sourced-backup-solution" target="_blank">old</a> version of Hash Verifier, or if you would just like to try it out you can download the new Hash Verifier in two different ways. The package marked <em>binary only</em> contains just the program itself and the relevant documentation. The package marked <em>all</em> contains both the program, documentation as well as the source code.</p>
<p><em>Requirements:</em></p>
<ul>
<li><strong>All platforms:</strong> .NET 2.0+ / Mono, a graphical display</li>
<li><strong>*nix platforms:</strong> WinForms (identified as System.Windows.Forms)</li>
</ul>
<table border="1">
<tbody>
<tr>
<td></td>
<td><strong>Binary Only Package</strong></td>
<td><strong>All Package</strong></td>
</tr>
<tr>
<td><strong>File name:</strong></td>
<td>hash_verifier_0_1_0_0_binary.zip</td>
<td>hash_verifier_0_1_0_0_all.zip</td>
</tr>
<tr>
<td><strong>File hashes:</strong></td>
<td style="text-align: center;" colspan="2"><a href="http://www.tylerburton.ca/files/hashes/hash_verifier_0_1_0_0.hashes.txt">Download Here</a></td>
</tr>
<tr>
<td><strong>GPG signature:</strong></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_1_0_0_binary.zip.sig" target="_blank">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/sigs/hash_verifier_0_1_0_0_all.zip.sig" target="_blank">Download Here</a></td>
</tr>
<tr>
<td><strong>License:</strong></td>
<td style="text-align: center;" colspan="2">(LGPL) <a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">View Here</a></td>
</tr>
<tr>
<td><strong>Version:</strong></td>
<td style="text-align: center;" colspan="2">0.1.0.0</td>
</tr>
<tr>
<td><strong>File download:</strong></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_1_0_0_binary.zip" target="_blank">Download Here</a></td>
<td><a href="http://www.tylerburton.ca/files/apps/hash_verifier_0_1_0_0_all.zip" target="_blank">Download Here</a></td>
</tr>
</tbody>
</table>
<div class="shr-publisher-105"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2009/11/the-return-of-the-hash-verifier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hash Verifier</title>
		<link>http://www.tylerburton.ca/2009/09/hash-verifier/</link>
		<comments>http://www.tylerburton.ca/2009/09/hash-verifier/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 19:55:41 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Created by Tyler Burton]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[hash verifier]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=13</guid>
		<description><![CDATA[[Update: A new version has been released! Click here to go to the new software page] On the old version of this site I had provided a popular application called Hash Verifier which did, of all things, verify file hashes on Windows. I know some people are still trying to link to it&#8217;s old location [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>[Update: A new version has been released! <a href="http://www.tylerburton.ca/software/">Click here</a> to go to the new software page]</h2>
<p>On the old version of this site I had provided a popular application called <em>Hash Verifier</em> which did, of all things, verify <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" target="_blank">file hashes</a> on Windows. I know <a href="http://www.jonathanfritz.ca/software/automating-command-line-applications-in-visualbasic-dot-net" target="_blank">some people</a> are still trying to link to it&#8217;s old location so I figured I might as well include it somewhere in the new site. So here it is!</p>
<p>Note: this program requires <a href="http://en.wikipedia.org/wiki/.NET_Framework" target="_blank">.NET</a> to run.</p>
<h2>Disclaimer:</h2>
<p>This software is no longer maintained. Do not e-mail me requesting changes, updates or support. I am providing this &#8220;as is&#8221; and will not be held responsible for it&#8217;s use. Please read the &#8220;read me.txt&#8221; file included in the download for more information.</p>
<p><strong>File name:</strong> hash_verifier.zip<br />
<strong>File Hashes:</strong> <a href="http://www.tylerburton.ca/files/hashes/hash_verifier.zip.hashes.txt" target="_blank">Download Here</a><br />
<strong>GPG signature:</strong> <a href="http://tylerburton.ca/files/sigs/hash_verifier.zip.sig" target="_blank">Download Here</a><br />
<strong>File download:</strong> <a href="http://tylerburton.ca/files/apps/hash_verifier.zip" target="_blank">Download Here</a></p>
<div class="shr-publisher-13"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2009/09/hash-verifier/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

