|
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 21
|
|
Вычислить хэш файлов - реализовать функцию самостоятельно19.03.2025, 15:26. Показов 2404. Ответов 24
Метки нет (Все метки)
ХЭШ ФУНКЦИЯ должна быть написана самостоятельно, а не браться из библиотек к языку программирования)!!!
0
|
|
| 19.03.2025, 15:26 | |
|
Ответы с готовыми решениями:
24
Программа самостоятельно действующая в Интернете |
|
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 126
|
||||||
| 19.03.2025, 16:51 | ||||||
|
Lord03, в интернете нашел. Самое простое хеширование.
3
|
||||||
|
100 / 96 / 17
Регистрация: 05.08.2021
Сообщений: 470
|
||||||
| 26.09.2025, 10:43 | ||||||
|
Не хэш файлов конечно, а просто хэш-таблица, но "ХЭШ ФУНКЦИЯ честно написана самостоятельно, а не бралась из библиотек к языку программирования".
Сказали что для первой попытки нормально
0
|
||||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
||
| 27.09.2025, 23:48 | ||
0
|
||
|
Модератор
|
||
| 28.09.2025, 01:40 | ||
|
Если хеш для подписи файла - это одно. Он должен значительно отличаться при незначительных изменениях защищаемого содержимого. Такой хеш, чаще всего, это сложная, трудно и долго вычисляемая функция. Если хеш, для хеш таблицы, функция которого ускорить поиск объектов, то здесь напротив нужна очень быстрая, лёгкая функция. Главное требование - это чтобы при одинаковом содержимом, был одинаковый хеш. Вероятность коллизий, конечно, тоже желательно уменьшить, но это не должно решаться во вред скорости. Самый наглядный пример хеша подобного рода - это хеш int32. Его хешем является само число. Для файла, например, хеш подобного рода, может вычисляться как набор байт: первый, 1/3 длины, 2/3 длины, последний. И всё это ^ с длиной файла.
0
|
||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
||||
| 28.09.2025, 09:18 | ||||
), то бишь любого, а сложность алгоритма функции, это уже несколько про другое...![]() Можно ещё дополнить требование к алгоритму именно: одинаковая длина для разных данных и т.д.... но речь ведь не об этом была... Понятно же, что деление размера файла на 10 никакой уникальности не даст, поэтому и уточнил...
0
|
||||
|
Модератор
|
||||
| 28.09.2025, 10:03 | ||||
|
Типовой хеш - это int32. А ключ может быть любым. Даже строкой из множества символов. Естественно, что для каких-то ключей хеши будут одинаковы. И в логику хеш-таблицы уже заложен механизм разрешения таких коллизий. Поэтому ответ: с двумя одинаковыми ключами - нет, с двумя ключами имеющими одинаковый хеш - да. Да, это, в большинстве случаев, и невозможно, даже в теории, поскольку типично длина хеша значительно меньше длины данных. Слишком маленькая изменчивость хеша очень сильно увеличивает вероятность коллизий. В указанном алгоритме, хеш таблица фактически превратится в 10 линейных списков. И время поиска по хеш таблице станет O(n), а при правильной реализации оно должно стремиться к O(1). Добавлено через 12 минут Lord03, в каком контексте дано такое задание? Есть два очень слабо между собой связанных: 1) Хеш для различных хеш таблиц (в том числе словарей) - чтобы ускорить поиск нужного файла по большому их количеству. Такое, например, может использоваться как часть логики файлового менеджера. В этом случае в типовой реализации хеш имеет длину 32 бита. 2) Безопасность (шифрование, крипто и т.п.) - в этом случае хеш должен обеспечить очень высокую сложность обратного вычисления, то есть чтобы для имеющегося файла и его хеша было практически невозможно подобрать другое содержимое с таким же хешем. В этом применении длина хеша обычно начинается от 256 бит и без верхней границы ограничения.
0
|
||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
|||||
| 28.09.2025, 10:04 | |||||
![]() Такой несколько условно "ехидный" вопросик: А что есть коллизия? ![]() А что за термин такой "устойчивость к коллизиям" - нафига его выдумали? Требования же нет... Ок, тогда вернемся к началу: Дайте определение хэш и предъявляемым к нему требованиям (с пруфами желательно)... ну, чтобы не спорить ради спора онли...
0
|
|||||
|
Модератор
|
|||||||
| 28.09.2025, 10:27 | |||||||
|
Но желательно уменьшать вероятность таких коллизий, так как они влияют на приближение к O(1).
Добавлено через 8 минут Например, для массива байт (в том числе, файл тоже можно так представить) вполне нормальный хеш это будет предложенный мною алгоритм: С другой стороны, обеспечение в общем случае мало-коллизийного метода, потребует учёта значения всех байтов файла. А это очень накладно для вычисления. Что противоречит пункту Вычисления хэш-функций должны быть недорогими, но в некоторых специальных случаях, такое тоже имеет право быть.Добавлено через 6 минут Типовое разрешение коллизий в хеш-таблице: там хранятся не сами объекты, а списки объектов. Список выбирается по хеш, а в самом списке уже ищется по равенству ключу. Даже уточню, так как хеши имеют огромную размерность, то реально в хеш таблице используется не сам хеш, а его деление по модулю на длину таблицы.
0
|
|||||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
||||||||
| 28.09.2025, 10:28 | ||||||||
|
Цитата из этой же ссылки:
0
|
||||||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
||
| 28.09.2025, 10:36 | ||
|
Внутреннее устройство разрешения коллизий хэшфункций и к чему стремились реализаторы - не интересно, в данном случае. Необходим выработать определение (договорится о термине), то бишь фундамент, что есть хэш, в принципе. А как его реализовать или как реализовано в том или ином случае и насколько близко к идеалу - это уже вторично.
0
|
||
|
Модератор
|
||||
| 28.09.2025, 10:40 | ||||
|
Ошибок в переводе нет. В данном контексте, например, может буллевое поле, которое может дать всего два значения. По смыслу здесь имеется ввиду, что GetHashCode() определяется на уровне типа данных, но она должна задаваться так, чтобы зависела не только от типа, но и от экземпляра этого типа.Добавлено через 1 минуту https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
0
|
||||
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
|||||||||
| 28.09.2025, 11:07 | |||||||||
|
Но, даже так, раз ошибок нет, что означает это:
![]() Поехали дальше, исходя из этого:
Теперь необходимо понять, столкновение/противоречие чего с чем происходит, при возникновении "коллизии хэшфункции" (одинаковый хэш при различных входных данных)? Ну, т.е. противоречие чему (что с чем конфликтует?) возникает при такой ситуации? Ведь это естественное состояние результата хэшфункции, т.к. требования уникальности отсутствует (с Ваших слов). Пояснение требуется. Добавлено через 7 минут Ну и чтобы сильно не флудить, мне импонирует такое определение:
![]() Как оказалось, поэтому и возникает стремление к одинаковому толкованию термина, чтобы не было беспредметных споров.
0
|
|||||||||
|
Модератор
|
||||||||||||||
| 28.09.2025, 11:49 | ||||||||||||||
|
Но 100% процентная вероятность коллизии приведёт к вырождению хеш-таблицы в линейный список. Для хорошей работы хеш-таблицы, нужно равномерное (сравнительно) распределение хешей по объектам (экземплярам), но уникальность не нужна. Уточню - уникальность, кончено, является положительным качеством, но только если она не достигается за счёт ухудшения сложности (скорости) вычисления хеша. Для хеш таблицы скорость и равномерность важнее. У поискового хеша (не знаю как правильно его назвать) другие задачи. Как пример, я уже выше приводил, хеш 32-х разрядного числа - это само число. https://source.dot.net/#System... t32.cs,108
А хеш 64-разрядного это XOR его старшей и младшей части: https://source.dot.net/#System... t64.cs,105
0
|
||||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 28.09.2025, 12:04 | |
|
0
|
|
|
Любознательный
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
|
||||
| 28.09.2025, 12:05 | ||||
![]() видимо, не договоримся... коллизия - противоречие. Если есть противоречие, то должно существовать две позиции - нормальное состояние (отсутствие противоречий) и противоречивое состояние (наличие коллизий): 1. Нормальное состояние - отсутствие совпадения хэш при различных данных (идеальный случай) 2. Коллизия - совпадение хэш при различных данных (реальность). Вывод: таки коллизия - это не норма, т.к. с ней производят борьбу (разрешение коллизий). Далее, логика: Если что-либо не является нормой, то существует требование нормального состояния, то бишь отсутствие коллизий - так? Или там с ветряными мельницами борются? Ну, да ладно... углубляться не будем. Оттуда же:
0
|
||||
|
Модератор
|
||||
| 28.09.2025, 12:28 | ||||
|
Хеш - это некое сокрашённое описание данных. В зависимости от задачи, это сокращение может быть разным. Для крипто и для поиска эти сокращения очень сильно различаются. Как по требованиям, так и по использованию. Общего у них только то, что они сокращённо описывают данные. В остальном они совершено разные сущности. Добавлено через 1 минуту Хабр |GetHashCode() и философский камень, или краткий очерк о граблях
0
|
||||
| 28.09.2025, 12:28 | |
|
Помогаю со студенческими работами здесь
20
Как самостоятельно создать класс-логгер без использования модуля logging? Самостоятельное изучение Django Научиться Python. Самостоятельно или на платных Курсах? Нужен совет! Самостоятельное обучение программированию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|