<?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>Neural Core Dump &#187; fractal</title>
	<atom:link href="http://www.jeffdarlington.com/tag/fractal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeffdarlington.com</link>
	<description>The personal blog of Jeffrey T. Darlington, creator of General Protection Fault</description>
	<lastBuildDate>Sat, 28 Jan 2012 20:00:00 +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>WinHasher 1.0 and Mandelbrot Madness! 2.0</title>
		<link>http://www.jeffdarlington.com/2007/09/26/winhasher-10-and-mandelbrot-madness-20/</link>
		<comments>http://www.jeffdarlington.com/2007/09/26/winhasher-10-and-mandelbrot-madness-20/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 20:07:55 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[fractal]]></category>
		<category><![CDATA[Mandelbrot Madness]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WinHasher]]></category>

		<guid isPermaLink="false">http://www.jeffdarlington.com/2007/09/26/winhasher-10-and-mandelbrot-madness-20/</guid>
		<description><![CDATA[I&#8217;m not sure if anyone cares, but I&#8217;ve been doing a tiny bit of dabbling in releasing Open Source software lately. Since I don&#8217;t particularly care to announce them on the GPF News (it isn&#8217;t, after all, GPF news), I&#8217;ll announce them here. For those of you who might complain that working on these has [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure if anyone cares, but I&#8217;ve been doing a tiny bit of dabbling in releasing <a href="http://www.opensource.org/" title="The Open Source Initiative">Open Source</a> software lately. Since I don&#8217;t particularly care to announce them on the <a href="http://www.gpf-comics.com/news/" title="GPF News">GPF News</a> (it isn&#8217;t, after all, <a href="http://www.gpf-comics.com/" title="General Protection Fault">GPF</a> news), I&#8217;ll announce them here. For those of you who might complain that working on these has taken precious time away from the comic, fret not. The tiny bit of time I&#8217;ve been able to squeeze in here and there to work on these have been during periods when working on the comic would be impossible, so there&#8217;s no way for there to be any conflict.</p>
<p>The first one I&#8217;ll announce is the most recent. <a href="http://www.gpf-comics.com/dl/winhasher/" title="GPF: WinHasher">WinHasher</a> is a <a href="http://msdn2.microsoft.com/en-us/netframework/aa731542.aspx" title="Microsoft .NET Framework 2.0">Microsoft .NET Framework 2.0</a> application for generating <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function" title="Cryptographic hash function article on Wikipedia">cryptographic hashes</a> of files. It is both a Windows <a href="http://en.wikipedia.org/wiki/Graphical_user_interface" title="Graphical user interface article on Wikipedia">GUI</a> applet and a console (command line) program, and it operates in two possible modes. The first mode generates the hash of a single file, which you can then use to verify a download or check to see if a file has been tampered with. The second mode takes the hashes of multiple files and compares them; in this way, you can see if two or more files have the same binary contents regardless of their names, locations, and time stamps. The Windows app supports drag-and-drop functionality, and the installer lets you also build shortcuts in your Windows Explorer &#8220;Send To&#8221; context menu so you can just right-click a file and get its hash.</p>
<p>So why did I build this? Well, the full details are on the site, but the quick version is that I&#8217;ve grown tired of not being able to validate the hashes of downloaded files because Windows doesn&#8217;t have a built-in hashing program. Linux and the other free UNIX clones have <a href="http://www.openssl.org/" title="OpenSSL">OpenSSL</a>; heck, even Mac OS has OpenSSL under the hood. Not Windows&#8230; of course. So instead of downloading a file on a Windows machine, copying it to the Linux box, validating the hash, and moving it back (or worse, just not even validating the hash at all and taking my chances), I hacked together this little program. Then I thought it might be useful enough to share, so I did. If you find it useful, please let me know.</p>
<p>For the really technically inclined out there, most of the hashes are built-in to .NET 2.0, so this was obscenely easy to implement. In fact, 2.0 has an abstract hash algorithm class (<code>System.Security.Cryptography.HashAlgorithm</code>) that all of the built-in hashes implement. The two non-standard hashes, <a href="http://en.wikipedia.org/wiki/Whirlpool_%28cryptography%29" title="Whirlpool (cryptography) article on Wikipedia">Whirlpool</a> and <a href="http://en.wikipedia.org/wiki/Tiger_%28hash%29" title="Tiger (hash) article on Wikipedia">Tiger</a>, were taken from the <a href="http://www.bouncycastle.org/csharp/" title="The Legion of the Bouncy Castle Crypto API">Legion of the Bouncy Castle Crypto API</a>, which is actually .NET 1.1 based. I (rather crudely) ported these classes to be subclasses of <code>HashAlgorithm</code>, so they can technically be used as a drop-in replacement of any .NET 2.0 hash. I plan to add additional hashes over time, provided that (a) the original source code is free and (b) I can port it to be a <code>HashAlgorithm</code> subclass.</p>
<p>The second program to mention is actually a bit of an oldie now. (I actually released it back in June.) The <a href="http://www.gpf-comics.com/dl/mandel/win32.html" title="Mandelbrot Madness! .NET Version">Windows version of <em>Mandelbrot Madness!</em></a> is back, also in a .NET 2.0 edition. I wrote the original in <a href="http://msdn.microsoft.com/visualc/" title="Microsoft Visual C++">Visual C++</a> 4.x, but have long since lost the source code. Then the <a href="http://www.gpf-comics.com/dl/mandel/java/" title="Mandelbrot Madness JAVA!">Java version</a> came into being and rapidly surpassed the Windows version, leaving it to suffer from bit rot. Both eventually languished as I lost time to work on them. Well, in December of 2005, I released the not-quite-complete-but-close-enough 4.0 version of <em>Mandelbrot Madness JAVA!,</em> declaring it abandoned. It always bugged me that I never went back and revisited the Visual C++ code, but without the source I was stuck.</p>
<p>Well, to make a long story short, my <a href="http://www.jeffdarlington.com/2006/05/25/homeward-bound/" title="Homeward Bound, May 25th, 2006">new job</a> had me <a href="http://www.jeffdarlington.com/2006/11/13/sometimes-it-makes-me-feel-dirty/" title="Sometimes it makes me feel dirty..., November 13th, 2006">learning a new programming language: C#</a>. That had me programing Web sites, but I knew you could also do Windows GUI apps in it as well. So somewhere down the line I got a wild hair and started the agonizing work of porting the Java code from the last version of <em>MMJ!</em> to C#. Actually, Java and C# are similar enough that the porting work wasn&#8217;t all that hard. Not only is <em>MM!</em> 2.0 now pretty much identical in functionality to <em>MMJ!</em> 4.0, but I introduced a number of new features that I hope to eventually port back to the Java version. While I still prefer the platform independence of Java, I&#8217;ll readily admit that the .NET version is a lot faster on Windows. I think that anyone on that platform that has actually bothered to play with the Java version (both of you) should make the switch. Anyone still using the decrepit old 1.0 version of Win32 <em>MM!</em> should enter the 21st century and upgrade too.</p>
<p>Both programs have been released under <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" title="GNU General Public License, version 2">version 2 of the GPL</a> (haven&#8217;t had time to really review <a href="http://www.gnu.org/copyleft/gpl.html" title="GNU General Public License">version 3</a> yet), so the sources are also available. If you have any suggested changes, feel free to pass them along and I might incorporate them into the official builds (giving you credit, of course).</p><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.jeffdarlington.com/2007/09/26/winhasher-10-and-mandelbrot-madness-20/' addthis:title='WinHasher 1.0 and Mandelbrot Madness! 2.0 '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.jeffdarlington.com/2007/09/26/winhasher-10-and-mandelbrot-madness-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

