Это зависит от того, что вы имеете в виду:
Как уже упоминалось, String.hashCode()
дает вам 32-битный хэш-код.
Если вы хотите(скажем, 64-битный хеш-код, вы можете легко реализовать его самостоятельно.
Если вы хотите криптографический хеш-код строки, библиотеки Java-шифрования включают в себя реализации MD5, SHA-1 искоро.Обычно вам нужно превратить строку в байтовый массив, а затем передать его генератору хеша / генератору дайджеста.Например, см. Ответ @Bryan Kemp.
Если вам нужен гарантированный уникальный хэш-код, вам не повезло.Хеши и хеш-коды не являются уникальными.
Строка Java длиной N имеет 65536 ^ N
возможных состояний и требует целого числа с 16 * N
битами для представления всех возможных значений.Если вы напишите хеш-функцию, которая выдает целое число с меньшим диапазоном (например, менее 16 * N
бит), вы в конечном итоге найдете случаи, когда более одной строки хеширует одно и то же целое число;т.е. хеш-коды не могут быть уникальными.Это называется принципом Pigeonhole , и существует прямое математическое доказательство.(Вы не можете бороться с математикой и побеждать!)
Но если «вероятно, уникален» с очень небольшим шансом неединственности, то крипто-хэши - хороший ответ.Математика скажет вам, насколько большим (то есть, сколько битов) должен быть хеш для достижения заданной (достаточно низкой) вероятности неединственности.