Just to add another comment here: Using a "real" cryptographic hash function is of course better from mathematical Point of view. But it might be good enough to just use the CRC32 function, that e.g. also carrierroute uses. If I remember the 1&1 internal test suite good enough, this is for a larger number of request quite ok (+/- 1% accuracy). Have a look to the carrierroute module and to core/hash_func.[c,h]. This could save you a bit of work and would be usable without the openssl dependency.