Рейтинг:0

Поиск хэш-функции (не обязательно криптографической), в которой аналогичные входные данные возвращают разные выходные данные.

флаг in

Мне нужно взять строку и вернуть цвет. Одним из требований является то, что одно и то же имя всегда возвращает один и тот же цвет. Во-вторых, похожие имена не должны возвращать одинаковые цвета.

Я понимаю, что свойство криптографических хеш-функций заключается в том, что небольшие изменения на входе приводят к большим изменениям на выходе (распространение). Это похоже на собственность, которая мне нужна. Однако я не требую, чтобы хэш-функция была криптографической в ​​любом другом смысле (она может быть легко обратима).

У кого-нибудь есть предложения, как написать функцию с этим свойством? Существуют ли существующие криптографические функции, которые я мог бы использовать? Спасибо.

флаг kr
MD5 (несмотря на то, что я не рекомендуется для криптографических целей, он соответствует вашим требованиям), SHA-256, SHA-512, BLAKE2, Whirlpool - все они соответствуют требованиям, которые вы описали.
solowt avatar
флаг in
Это здорово, спасибо. Знаете ли вы, существуют ли некриптографические хэш-функции, обладающие нужными мне свойствами?
Mark avatar
флаг ng
@solowt есть, но неясно, будет ли их проще использовать. Есть по крайней мере две соответствующие концепции: одна из них — «хаотическая карта» — небольшие изменения на входе приводят к большим изменениям на выходе. Другой - случайное блуждание, которое «быстро смешивается», например. (как криптографический хэш), можно ожидать, что результат после нескольких итераций будет выглядеть однородным. Единственная причина, по которой я бы не стал использовать хеш-функцию, заключалась в том, что у меня уже была работающая реализация, и я заметил, что вызовы хэш-функции нуждаются в оптимизации. Однако криптографические хеш-функции работают на удивление быстро.
Mark avatar
флаг ng
также стоит упомянуть, что я недостаточно знаю о «готовых» реализациях двух концепций, которые я описал. Конечно, для хэш-функций их много.
флаг kr
@solowt: MD5 не является криптографически безопасным.Он был разработан для криптографических целей. Но он имеет слабую устойчивость к коллизиям и не используется ни в каких серьезных криптографических случаях.
jthill avatar
флаг cn
Просто crc32 делает именно то, о чем вы просите.
solowt avatar
флаг in
Всем спасибо. Я посмотрю на crc32 и md5. Цените помощь.
kelalaka avatar
флаг in
Я голосую за закрытие этого вопроса, потому что речь идет не о криптографических хеш-функциях. Это больше подходит для CS.
solowt avatar
флаг in
Спасибо за вашу помощь, KELALAKA, ценю это, продолжайте в том же духе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.