checksum tricks and tips
hints, secrets, behaviours, assumptions and more..

Get the most from your hashing!

checksum represents a whole new way of working with hashes. This page aims to help YOU get the most out of the experience, wherever you're at..


Absolute beginners..

The basics: checksum creates "hash files". A hash file is a simple, plain text file containing one or more file hashes, aka. "checksums". Hashes are small strings which uniquely represent the data that was hashed. e.g..

cf88430390b98416d1fb415baa494dce *08. Allow Your Mind To Wander.mp3

(Mike Mainieri - Journey Thru An Electric Tube [1968] - I have the vinyl)

If you want to know more about the algorithms that checksum uses to hash files (currently MD5 and SHA1), see here.

Once these hashes have been created for a particular file or folder (or disk), you have a snapshot that can be used, at any time in the future, to verify that not one bit of data has changed. And I do mean a "bit"; even the slightest change in the data will, thanks to the avalanche effect, produce a wildly different hash, which is what makes these algorithms so good for data verification.

 
an imagean imagean imagean image
 


The basic checksum tasks..

Most people will simply install checksum, and then use the Explorer context (right-click) menu to create and verify checksums, rarely needing any of the "extra" functionality that lurks beneath checksum's simple exterior. After all, checksum is designed to save you time, as well as aid peace of mind. This is how I mostly use it, too..

Create checksums..

Right-click a file, the checksum option produces a hash file (aka. 'checksum file') with the same name as the file you clicked, except with a .hash extension. So a checksum of some-movie.avi would be created, named some-movie.hash (if you don't use the unified .hash extension, your file would instead be named some-movie.md5 or some-movie.sha1, depending on the algorithm used).

Right-click a folder, the Create checksums.. option will produce a hash file in that folder, containing checksums for all the files in the folder (and so on, inside any interior folders), named after the folder(s), again, with a .hash extension, e.g. somefolder.hash

Verify checksums..

Click (left-click) a hash file (or right-click and choose Verify this checksum file..), checksum immediately verifies all the hashes contained within.

Right-click a folder, the Verify checksums.. option instructs checksum to scan the directory and immediately verify any hash files contained within.

That's about it, and this simple usage is fine for most situation. But occasionally we need more..
 


checksum launch modifiers..

When you launch checksum, you can modify its default behaviour in two important ways.

Image of a <SHIFT> Key, checksum's main modifier key

The first modifier is the <SHIFT> key. Hold it down when checksum launches, and you pop-up the one-shot options dialog, which enables you to change lots of other things about what checksum does next. This works with both create and verify tasks, from explorer menus or drag-and-drop. Here is what the one-shot create dialog looks like..

an image of checksum's one-shot hash creation dialog


In there, as you can see, you can set all sorts of things. Hover over any control to get a Help ToolTip (you might need to repeat that to read the entire tip!). You can also drag files and folders directly onto that dialog, if you want to alter the path setting without typing. Same for the verify options.

The file mask: input is, by default, *.*, which means "All files", "*" being a wildcard, which matches any number of any characters. You can have multiple types, too, separated by commas. For example, if you wanted to hash only PNG files, you would use *.png; if you wanted to hash only text files beginning with "2008", you could use 2008*.txt, and so on.

If you click the drop-down button to the right of the input, you can access your pre-defined file groups, ready-for-use (you can easily add to/edit these in your checksum.ini)..

checksum creation options dialog, file types group drop-down, regular Windows masks apply
NOTE: If you drop a file onto the create options, the path is inserted into the path: input, and though the file mask remains *.*, the file name is also automatically added to the file mask drop-down, just in case you really do wish to only hash a single file.
 
Image of a <Ctrl> Key, checksum's second modifier key

The second modifier is the <Ctrl> key. Hold it down when checksum launches and you force checksum into verify mode, that is to say, no matter what type of file it was, you instruct checksum to treat it as a hash file, and verify it. This works with drag-and-drop too, onto checksum itself, or a shortcut to checksum. checksum's default drag-and-drop action is to create hashes.

Amongst other things, this is useful for verifying folders in portable mode, simply Ctrl+drag-and-drop the folder directly onto checksum (or a shortcut to it), and all its hashes will be immediately verified.
 


Automatic Music playlists..

Perhaps checksum's second most common extra usage is making music playlists. After you have ripped an album, you will most likely want a playlist along with your checksums, so why not do both at once? checksum can.

Right-click a folder and SHIFT-Select the checksum option (which pops up the one-shot options dialog), check the create music playlists option, and then do it now! You're done.

By default, checksum will also recurse (dig) into other folders inside the root (top) folder. Now you've got music playlists (.m3u or .pls) that you can click to play the whole album in your media player.

Note that checksum will thoughtfully switch your file masks to your current music group when you select the playlists option, reckoning that you'll probably only want to actually hash the music files, not associated images, info files and such, but it's easy enough to switch it back to *.* (hash all files) if you need that. The rationale behind this being that it's what most people want, so the majority get the simpler, two-click task!

If you do this sort of thing a lot, check out the next section, for how to put this functionality directly into your Explorer context menu, and skip the dialog altogether..
 


Custom Explorer Context Menu Commands made easy..
custom Windows explorer context menu command

On the subject of music files, you may encounter a lot of these, and fancy creating a custom explorer right-click command along the lines of "checksum all music files", or something like that. No problem; you can simply create a new command in the registry, add the "m" switch add your file masks, right?

But what if you change your file masks? Perhaps add a new music file type? Do you have to go and change your registry again? NO! checksum has it covered. Instead of specifying individual file masks, use your group name in the command, e.g. m(music) and checksum applies all the file masks from that group automatically, so your concept command is always up-to-date with your latest preferences.

Here's an example registry command that would do exactly that. Copy and paste into an empty plain text file, save as something.reg, and merge it into your registry. If you installed checksum in a different location, edit the path to checksum before you merge it into the registry (not forgetting to escape all path backslashes - in other words, double them)..

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\01b.checksum music]
@="Checksum &MUSIC files.."

[HKEY_CLASSES_ROOT\Directory\shell\01b.checksum music\command]
@="\"C:\\Program Files\\corz\\checksum\\checksum.exe\" crm(music) \"%1\""
		
NOTE! If you add a "3" to the switches [i.e. make them c3rm(music)] you'll get a media player album playlist files created automatically along with the checksum files. Groovy! Here's one I prepared earlier.

Setting new default Explorer context actions..

You can also change checksum's default  Explorer commands, as well as add new commands, without going anywhere near the registry. Simply edit the installer's setup.ini file, [keys] section. For example, to always bring up the one-shot options dialog when creating checksums on folders and drives, you would add an "o" to those two commands..

HKCR\Directory\shell\01.|name|\command="|InstalledApp|" cor "%1"
HKCR\Drive\shell\01.|name|\command="|InstalledApp|" cor "%1"


Then run checksum's installer (setup.exe), and install/reinstall checksum with the new options. From then on, any time you select the "Create checksums.." Explorer context menu item, you will get the one-shot options dialog. If you would prefer to synchronise hashes under all circumstances, add a y, and so on.
 


Creating checksums "quietly"..

If you want to script or schedule your hashing tasks, you will probably want checksum to run without the funky progress tip, dialogs and so forth. If so, add the Quiet switch.. q

When the q options is used alone, if checksum encounters existing hash files, it continues as if you had clicked "No to All", in the dialog, so no existing files are altered in any way. This is the safest default.

If you would prefer checksum to act as if you had clicked "Yes to all", instead, use q+, and any existing checksums will be overwritten.

If you want synchronisation, add a y switch (it can be anywhere in the switches, so long as it's in there somewhere, but qy is just fine)

Quiet operation also works for verification, failures are logged, as usual. Like most of checksum's command-line switches, these behaviours can be set permanently, in your checksum.ini.
 


Working with Cross-Platform hashes..

checksum has a number of features designed to make your cross-platform, inter-networking life a bit easier.

You don't have to do anything to work with hash files created on other platforms, checksum can handle these out-of-the-box.

If you need to create hash files for use on other platform, perhaps with some particular system file verification tool, checksum has a few preferences which might help..

You will perhaps appreciate checksum's plain text ini file (checksum.ini) containing all the permanent preferences. Inside there you can set not only which Line Feeds checksum uses in its files (Windows, UNIX, or Mac), but also enable UTF-8 files, single-file "root" hashing, generic hash file naming, UNIX file paths, and more. Lob checksum.ini into your favourite text editor and have a scroll.
 


checksum in your SendTo menu..

There are a number of ways to run checksum. One handy way, especially if you are running checksum in portable mode without Explorer menus, is to keep a shortcut to checksum in the SendTo menu.

Simply put; any regular file or folder sent to checksum will be immediately hashed. Send a checksum file (.hash, .md5, .sha1, plus whatever UNIX hash files you have set), and it will be immediately verified. If you want extra options, hold down the <SHIFT> key, as usual.

If you want to send a non-checksum file, but have checksum treat it as a checksum file, hold down the <Ctrl> key during launch, to force checksum into verify mode (either just after you activate the SendTo item, or perhaps easier; hold down <SHIFT> AND <Ctrl> together while you click, to bring up the one-shot verify options). This is also handy for verifying folder hashes.

 


How to accurately compare two CDs, DVDs, etc.
(even when they don't have hash files on them)..

When hashing read-only media, obviously we cant store the hash files on the disk itself. However, thanks to checksum's range of intelligent read-only fallback strategies, you can make light work of comparing comparing read-only disks with super-accurate MD5 or SHA1 hashes, even if those disk were burned without  hashes.

All we need to do, is ask checksum to create a "root" hash file of the original disk, using the "Absolute paths" option. This will produce a hash file containing hashes for the entire disk, with full, absolute paths, e.g..

531a3ce6b631bb0048508d872fb1d72f *D:\Sweet.rar
558e40b6996e8a35db668011394cb390 *D:\Backups\Efficient.cab
832e98561d3fe5464b45ce67d4007c11 *D:\Sales Reports\April.zip


There are a few ways to achieve this. For one-off jobs, you can simply add k1 to your usual command-line switches. For example, to create a recursive root hash file of a disk, with absolute paths, you would use crk1.

Another way, is to set (and forget) checksum's fallback_level preference to 2, inside checksum.ini..

fallback_level=2

With fallback_level=2, when checksum is asked to create hashes of a read-only volume, it will fall-back to creating a single "root" hash with absolute paths, inside your fall-back location (also configurable), which is exactly what we need!

Then in the future, to verify the original disk, or copies of the disk; you simply insert it, and click the hash file.

You can store the .hash file anywhere you like; so long as the disk is always at D:\, or whatever drive letter you used to create the .hash file originally, it will continue to function perfectly.

If you want to know more about checksum's read-only fall-back strategies, see here.
 


checksum as an installer watcher..

Because checksum can so accurately inform you of changes in files, it can function as an excellent ad-hoc installer watcher. All you do is create a root checksum for the area you would like to watch. Run the installer. And afterwards, verify the checksum. If anything has changed, checksum will let you know about it, with the option to log the list to funky XHTML or plain text.

Similarly, checksum can be utilized in any situation where you need to know about changed files. You can even use it to compare registry files, one exported before, the other after an install or other process. If the hashes match, there's no need to look further.
 


checksum's custom command-line switches..

Click & Go!  is the usual way to operate checksum; but thanks to checksum's comprehensive set of command-line switches, we can also do a whole lot more, handling all sorts of unusual jobs, when required.

If you simply have some special task to accomplish, chances are it can be achieved via the one-shot options dialog, and you won't need to use switches. However, if you are creating a script or custom front-end to control checksum, modifying your Explorer context menu commands, or creating a scheduled task, you will probably find this section useful.

Switches are placed before the path statement, for example; to verify a checksum file..

C:\Program Files\corz\checksum\checksum.exe v C:\path\to\file.hash

Here are all the available switches:

c
Create checksums.
 
v
Verify checksums.
 
r
Recurse (only for directories).
 
y
Synchronize (add any new file hashes to existing checksum files).
 
i
Individual hash files (one per file).
 
s
Create SHA1 checksums (default is to create MD5 checksums).
 
u
UPPERECASE hashes (default is lowercase).
 
m
File masks. Put these in brackets after the m. e.g.. m(*.avi,*.rm)
Note: You can use your file groups here, e.g. m(music)
 
e
Add file extensions to checksum file name (for individual file hashes)..
 
1
Create one-file "root" checksums, like Linux CD's often have.
 
3
Create .m3u playlists for all music files encountered (only for folder hashing)..
 
p
Create .pls playlists for all music files encountered (only for folder hashing)..
 
q
Quiet operation, no dialogs (for scripting checksum - see help for other options)..
 
h
Hide checksum files (equivalent to 'attrib +h').
 
o
One-shot Options. Brings up a dialog where you can select extra options for a job.
(to pop up the options at run-time, hold down the <SHIFT> key)
 
b
Beeps. Enable audio alerts (if disabled in your prefs - override it).
 
t
ToolTip. Enable the progress ToolTip windoid (if it is disabled in your prefs - override it).
 
n
No Pause. Normally checksum pauses on completion so you can see the status. This disables it.
(note: you can also set the length of the pause, in your prefs)
 
k
Absolute Paths. Record the absolute path inside the (root) checksum file.
Use this only if you are ABSOLUTELY sure the drive letter isn't going to change in the future..
 
f
Log to a file
(if there are failures, checksum always gives you the option to log them to a file)
 
g
Go to errors.
If a log was created; e.g. there were errors; open the log folder on task completion.
 
l
Log everything.
(the default is to only log failures, if any).
 
a
Only verify these checksum files.
(followed by algorithm letter: am for MD5, as for SHA1 - see example below).
 
 
The 'a', 'f', 'g', 'l', and switches only take effect when verifying hashes.
The '1', '3', 'e', 'h', 'i', 'k', 'm', 'o', 'p', 's', 'u', and 'y' switches only take effect when creating hashes.

In other words..
global switches = b, n, o, q, r, t.
creation switches = 1, 3, c, e, h, i, k, m, p, s, u, y.
verify switches = a, f, g, l, v.

Switches can be combined, like this..
… checksum.exe v "C:\my long path\to\files.md5"
[ note 'long' path (with spaces) enclosed in "quotes" ]
 
… checksum.exe crim(movies) c:\downloads
[ create individual checksums for all my movie files - note use of group name ]
 
… checksum.exe vas c:\archives
[ check all *.sha1 files in the path, not *.md5 files ]
 
… checksum.exe c3rm(music) p:\audio
[ recursive music file checksum creation, with automatic playlists ]
 
… checksum.exe cr1m(*.zip) d:\
[ create a "root" checksum for all zip files on drive D: ]
 
 

notes:

And remember, if there's some specific behaviour that you want set permanently, you can do that, and a lot more, inside checksum.ini..
 


checksum.ini
working with checksum's UNIX-style preference file..

checksum has a lot of available options. Here is a page that will help you get the most out of them.
 
image of checksum icon/logo, in super-large 256 pixel size PNG!
 
[site notice]

If you give a shit, BUY A SHIRT!