Я получил строку произвольной длины (допустим, от 5 до 2000 символов), которую я бы хотел вычислить для контрольной суммы.
Требования
- Та же контрольная сумма должна быть возвращена каждый раз, когда вычисление выполняется для строки
- Контрольная сумма должна быть уникальной (без столкновений)
- Я не могу хранить предыдущие идентификаторы для проверки на наличие конфликтов.
Какой алгоритм я должен использовать?
Обновление:
- Есть ли подход, который является разумным уникальным? то есть вероятность столкновения очень мала.
- Контрольная сумма должна быть буквенно-цифровой
- Строки являются unicode
- Строки - это фактически тексты, которые должны быть переведены, и контрольная сумма хранится при каждом переводе (так что переведенный текст можно сопоставить с исходным текстом).
- Длина контрольной суммы для меня не важна (чем короче, тем лучше)
Update2
Скажем, что я получил следующую строку "Welcome to this website. Navigate using the flashy but useless menu above"
.
Строка используется в представлении аналогично gettext
в linux. то есть пользователь просто пишет (в режиме бритвы)
@T("Welcome to this website. Navigate using the flashy but useless menu above")
Теперь мне нужен способ идентифицировать эту строку, чтобы я мог ее извлечь из источника данных (существует несколько реализаций источника данных). Использование всей строки в качестве ключа кажется немного неэффективным, и поэтому я ищу способ генерировать ключ из него.