Этот вопрос является своего рода дубликатом Быстрого алгоритма хеширования строк с низкой частотой столкновений с 32-битным целым числом . Если вам важна скорость, начните с ссылок. (MurmurHash, похоже, является консенсусным выбором.)
Если производительность не имеет большого значения, просто возьмите библиотеку SHA-1 и используйте первые 16 из 20 байтов вывода. Это тривиально для кода, использующего библиотеку, и настолько устойчиво, насколько это возможно, к столкновениям.
[править]
Как отмечает Джон Флэтнесс в комментарии, MD5 также будет отвечать всем требованиям. Я подозреваю, что в наши дни легче будет найти библиотеки SHA-1, чем MD5 (так как MD5 был взломан несколько лет назад), но в зависимости от того, что у вас есть, все будет в порядке, поскольку это не криптографическое приложение.