sphlib provides optimized implementations in both C and Java of cryptographic hash functions. The C code includes "small footprint" variants optimized for architectures with low L1 cache (e.g. WiFi routers running OpenWRT). The C code comes with a command-line tool that can serve as a drop-in replacement for md5sum, sha1sum, sha256sum, etc. for all implemented hash functions. The Java code is compatible with J2ME. There are implementations of fourteen "second-round" SHA-3 candidates, for all output lengths: BLAKE, Blue Midnight Wish, CubeHash, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3, SIMD, and Skein. Some pre-SHA-3 hash functions (including MD4, MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, RIPEMD-160, and others) are also implemented.
hashl creates a database with partial file hashes. It is useful for checking if you already have a copy of files before transferring them over a slow network. It does this by hashing only the first few MiB of every file. This gives it a huge speed advantage at the cost of possible (though pretty improbable) false positives.
BAD (BAckup Daemon) "watches" a directory and copies any files or directories moved/copied into it to another "backup" directory automatically using inotify. It will automatically generates hashes for files using the md5 hashing algorithm, and stores them in a file for quick and easy integrity checking. It will log (mostly) everything it's doing, and makes it very convenient to grep for certain messages using multiple logging levels which the user can set to get the desired output. It has its own built-in uninstaller which will delete any and all files it has created (besides the user's watch and backup directories).