Недавно у меня была интересная дискуссия с коллегой о хэш-функции. Наши выводы были следующими:
Если вам действительно нужно написать хорошую хэш-функцию, которая сводит к минимуму коллизии больше, чем реализации по умолчанию, доступные на стандартных языках, вам необходимо иметь высшее образование по математике.
Если вы пишете приложения, в которых настраиваемая хеш-функция заметно улучшит производительность вашего приложения, вы - Google, и у вас есть много кандидатов наук по математике, чтобы выполнить работу.
Извините, что не отвечаю напрямую на ваш вопрос, но суть в том, что на самом деле нет необходимости писать собственную хеш-функцию для String. На каком языке вы работаете? Я предполагаю, что есть простой способ вычислить «достаточно хороший» хеш-код.