There's nothing reckless about taking only part of an md5 hash. The MD5 algorithm is a good hashing algorithm and ensures that small changes to the source will result in big changes to the hash, so you don't have to worry about similar inputs producing similarities in the (first|last|middle) X bits. As for hoping there are no collisions, reducing the hash size does increase the chance of collision, but there's no guarantee that each full length md5 will be unique. It should be trivial to write code which checks for a collision and fixes it (by appending characters onto the input data until the md5 is unique, for example).