HashProp - a better way to MD5 (and SHA) in Windows

HashProp is a Windows shell extension that I decided to write at the previous Carmel Code and Coffee meetup. Basically, it adds a new tab to the File Properties dialog for every file in Windows with the ability to calculate the file's hashes:

HashProp screenshot

It's a simple interface, so people can quickly and easily calculate MD5, SHA-1, SHA-256, and SHA-512 for any file.

I created this thing after getting some inspiration from @Jaxidian. He showed me a similar app that hasn't been updated in years, and that didn't support SHA-256 or SHA-512. Personally, I've been using an even older app that integrated into every file's right-click context menu - again, without support for SHA-256 or SHA-512. I remembered that, with the introduction of .NET 4, Windows shell extensions could be created in a managed environment, and I found a wonderfully easy to use SDK to do just that.

One thing I intentionally focused on was overall UX. Is the file being hashed very slowly? The percentage is shown while the calculation is occurring to let users know that the system is working. This is especially useful when hashing large files that are served over the network. What do I often do after hashing a file? I copy the hash to the clipboard. Clicking the textbox with the hash (or leaving the textbox selected until hashing completes) will auto-select all text in the textbox. Oh yeah, clicking the Calculate button disables it while the calculation is occurring, and the corresponding textbox is selected. And finally, if the hashing is taking a long time and the user closes the File Properties dialog, the hashing is stopped and the file handle is released. This is all a part of good UX.

HashProp is released under the ISC License. The source code and links to binaries are on available on GitHub.

EDIT: Well, it looks like I released the first version a tad too early - before doing extensive testing. Turns out, the initial version of HashProp had two issues: the installer didn't always register the DLL correctly in the Registry due to UAC, and the property page code that I'm relying on from SharpShell doesn't seem to work on all platforms. I'm releasing version 1.0.1 now with a different way to access the hashing UI (file context menu) and a fixed installer. Sorry about that.

comments powered by Disqus