Use C# instead of Bourne shell to do md5 hashing.

The shell code for this was fragile, as explained in issue #12.