in reply to Short hash algorithm

Use bitreverse (see Bit::Vector, Reverse() for example), or another similar bitswapping mechanism, that way you can map any integer to another integer, in a unique way, reversible way. Most users won't have a clue to what's happening.

Another idea is to just pick a random number, check it for uniqueness, and store it in a database table for reverse lookup.