Size: a a a

Kotlin Community

2020 February 19

VP

Vladimir Petrakovich in Kotlin Community
Alexey Tkachenko
UUID — это таки не хэш
А тут речь не про хэш, а вероятность случайного совпадения
источник

AT

Alexey Tkachenko in Kotlin Community
Речь о вашем утверждении, что криптографический хэш может гарантировать уникальность. Таки нет, не может, если он меньше исходных данных
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexey Tkachenko
Речь о вашем утверждении, что криптографический хэш может гарантировать уникальность. Таки нет, не может, если он меньше исходных данных
В теории - да, но на практике на это можно спокойно положиться
источник

AT

Alexey Tkachenko in Kotlin Community
Vladimir Petrakovich
В теории - да, но на практике на это можно спокойно положиться
Так себе совет. Не делайте так
источник

VP

Vladimir Petrakovich in Kotlin Community
Другое дело, уместное ли это решение исходной задачи...
источник

AN

Alexander Nozik in Kotlin Community
Обычно нормальные алгоритмы делают проверки на хэш-конфликтах. Именно поэтому и реализуют и хэш-код и equals
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexey Tkachenko
Так себе совет. Не делайте так
Ок, пойду гит выкину
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Ок, пойду гит выкину
Я думаю, что гит на хэш конфликтах тоже что-то дополнительно проверяет
источник

AN

Alexander Nozik in Kotlin Community
другое дело, что там их действительно не бывает
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Я думаю, что гит на хэш конфликтах тоже что-то дополнительно проверяет
Он далеко не всегда имеет принципиальную возможность это сделать
источник

AT

Alexey Tkachenko in Kotlin Community
Alexander Nozik
другое дело, что там их действительно не бывает
Кого где действительно не бывает? Коллизий на хэшах?
источник

I

Ivan in Kotlin Community
Quantum Harmonizer
Нет.
Какая задача решается?
приходят элементы с сервера, у них нет уникальных айдишников.
нужно их кэшировать и вытаскивать.
соотвественно, пытаюсь сам генерировать айди.
в данный момент использую autoGenerated = true в Room.

а поскольку я использую distinctUntilChanged и собственную перегрузку hashCode и equals, у меня получается такая ситуация, что вот этот autogeneratedId в UI может отставать от актуального.

в общем, трудновато объяснить. специфика данных с сервера
источник

AN

Alexander Nozik in Kotlin Community
Alexey Tkachenko
Кого где действительно не бывает? Коллизий на хэшах?
В гите. Слишком большие куски текстовых данных
источник

VP

Vladimir Petrakovich in Kotlin Community
Ну конкретно для SHA-1 коллизии уже есть, но так это уже не криптостойкий хэш
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Ну конкретно для SHA-1 коллизии уже есть, но так это уже не криптостойкий хэш
криптостойкость и коллизии - вещи ортогональные
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
криптостойкость и коллизии - вещи ортогональные
Одно из свойств криптохэша - коллизии нельзя найти за вменяемое время. Нашли - всё, потрачено.
источник

ЕБ

Евгений Быков in Kotlin Community
Vladimir Petrakovich
Ок, пойду гит выкину
Ему потенциально может прийти несколько миллионов данных, и у них должны быть уникальный ИД. На гите не столько сравнений хэшем идёт
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Одно из свойств криптохэша - коллизии нельзя найти за вменяемое время. Нашли - всё, потрачено.
Это про целенаправленный поиск, а мы про случайные.
источник

AT

Alexey Tkachenko in Kotlin Community
Alexander Nozik
В гите. Слишком большие куски текстовых данных
Не могу согласиться с таким утверждением. Возможно, на практике они встречаются редко, но не быть коллизий вообще никак не может
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Это про целенаправленный поиск, а мы про случайные.
Про случайные - да, согласен
источник