Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 21

Вычислить хэш файлов - реализовать функцию самостоятельно

19.03.2025, 15:26. Показов 2404. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ХЭШ ФУНКЦИЯ должна быть написана самостоятельно, а не браться из библиотек к языку программирования)!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2025, 15:26
Ответы с готовыми решениями:

Самостоятельно реализовать логистическую регрессию
Добрый день! Посмотрите пожалуйста, правильно ли я выполнил задание. Текст задания: ...

Вычислить заданные выражения. Входные данные задать самостоятельно, вывести результаты вычислений на экран

Программа самостоятельно действующая в Интернете
Прошу простить если вопрос задан в неправильном форуме, мне нужен конкретный совет, нужно что-бы...

24
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
19.03.2025, 15:29
Lord03, вопрос то какой? читаешь как реализовать любую хеш-функцию и пишешь руками. Ну или сам с потолка напиши, раз требований по коллизиям и скорости нет.
0
261 / 36 / 7
Регистрация: 03.02.2025
Сообщений: 126
19.03.2025, 16:51
Lord03, в интернете нашел. Самое простое хеширование.
Python
1
2
3
4
5
6
7
8
9
def simple_hash(key):
    hash_value = 0
    for char in key:
        hash_value += ord(char)
    return hash_value % 1000
 
 
key = "example"
print(f"Хеш-значение для ключа '{key}': {simple_hash(key)}")
3
100 / 96 / 17
Регистрация: 05.08.2021
Сообщений: 470
26.09.2025, 10:43
Не хэш файлов конечно, а просто хэш-таблица, но "ХЭШ ФУНКЦИЯ честно написана самостоятельно, а не бралась из библиотек к языку программирования".
Сказали что для первой попытки нормально
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mass = [[[None],[None]] for _ in range(10)] 
  
def to_hash(x):      
    res = [bin(ord(i)) for i in x]  
    res = ''.join([i[2:] for i in res])  
    x = int(res, 2) % len(mass)  
    return x 
 
def add_after(ind, val): 
    global mass 
    i = len(mass[ind][0]) - 1 
    mass[ind][0] += [val] 
    mass[ind][1] += [mass[ind][1][i]] 
    mass[ind][1][i] = len(mass[ind][0]) - 1 
 
 
add_after(to_hash('Bill'), 'Bill:Clinton') 
add_after(to_hash('Ronald'), 'Ronald:Reagan') 
add_after(to_hash('John'), 'John:Fitzgerald Kennedy') 
add_after(to_hash('Harry'),  'Harry:S. Truman') 
add_after(to_hash('Joe'), 'Joe:Biden') 
add_after(to_hash('Jimmy'), 'Jimmy:Carter') 
add_after(to_hash('Barack'), 'Barack:Obama') 
add_after(to_hash('Theodore'), 'Theodore:Roosevelt') 
add_after(to_hash('James'), 'James:Garfield') 
add_after(to_hash('Lyndon'), 'Lyndon:Johnson') 
 
def find_in_list(name): 
    ind = to_hash(name)     
    k = 0     
    while mass[ind][1][k] is not None:    
        result = mass[ind][0][k + 1].split(':')         
        if result[0] == name: 
            return result[1] 
        k = mass[ind][1][k] 
      
print(find_in_list(input('Name of president ').capitalize()))
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.09.2025, 23:07
Вы бы требования немного сузили. А то я могу, например, взять размер файла и остаток от его деления на 10. Тоже хеш.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
27.09.2025, 23:48
Цитата Сообщение от dondublon Посмотреть сообщение
Тоже хеш.
это вряд ли, главное свойство хэш - уникальность... размер файла, даже с учетом деления на 10 (пусть даже это будет подобием матфункции) - вещь не уникальная, от слова совсем. Ну и допсвойство невозможности восстановления исходных данных из хэш-значения, тоже должно присутствовать... умножить на 10 - весьма просто
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 01:40
Цитата Сообщение от YuS_2 Посмотреть сообщение
это вряд ли, главное свойство хэш - уникальность...
Смотря какого.
Если хеш для подписи файла - это одно. Он должен значительно отличаться при незначительных изменениях защищаемого содержимого. Такой хеш, чаще всего, это сложная, трудно и долго вычисляемая функция.

Если хеш, для хеш таблицы, функция которого ускорить поиск объектов, то здесь напротив нужна очень быстрая, лёгкая функция. Главное требование - это чтобы при одинаковом содержимом, был одинаковый хеш. Вероятность коллизий, конечно, тоже желательно уменьшить, но это не должно решаться во вред скорости.
Самый наглядный пример хеша подобного рода - это хеш int32. Его хешем является само число.

Для файла, например, хеш подобного рода, может вычисляться как набор байт: первый, 1/3 длины, 2/3 длины, последний. И всё это ^ с длиной файла.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 09:18
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Смотря какого.
Чойта? Всё же, настаиваю, что уникальность - главное, хоть и не единственное свойство хэш (в программировании, во всяком случае, про жаргон и жаргонизмы здесь не будем развивать тему, ибо противозаконно ), то бишь любого, а сложность алгоритма функции, это уже несколько про другое...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если хеш, для хеш таблицы, функция которого ускорить поиск объектов, то здесь напротив нужна очень быстрая, лёгкая функция.
Такой вопрос возникает... получится ли создать хэш-таблицу с двумя идентичными ключами? И почему хэш-таблицы называют именно хэш-таблицами?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Главное требование - это чтобы при одинаковом содержимом, был одинаковый хеш
А ещё есть требование и тоже главное - уникальность при уникальных данных, т.е. при различающихся данных не должно быть одинакового хэш.
Можно ещё дополнить требование к алгоритму именно: одинаковая длина для разных данных и т.д.... но речь ведь не об этом была...
Понятно же, что деление размера файла на 10 никакой уникальности не даст, поэтому и уточнил...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 10:03
Цитата Сообщение от YuS_2 Посмотреть сообщение
получится ли создать хэш-таблицу с двумя идентичными ключами?
Хеш и ключ это ни одно и тоже.
Типовой хеш - это int32.
А ключ может быть любым. Даже строкой из множества символов.
Естественно, что для каких-то ключей хеши будут одинаковы. И в логику хеш-таблицы уже заложен механизм разрешения таких коллизий.

Поэтому ответ: с двумя одинаковыми ключами - нет, с двумя ключами имеющими одинаковый хеш - да.

Цитата Сообщение от YuS_2 Посмотреть сообщение
А ещё есть требование и тоже главное - уникальность при уникальных данных,
Нет такого требования.
Да, это, в большинстве случаев, и невозможно, даже в теории, поскольку типично длина хеша значительно меньше длины данных.

Цитата Сообщение от YuS_2 Посмотреть сообщение
Понятно же, что деление размера файла на 10 никакой уникальности не даст, поэтому и уточнил...
С этим согласен.
Слишком маленькая изменчивость хеша очень сильно увеличивает вероятность коллизий.
В указанном алгоритме, хеш таблица фактически превратится в 10 линейных списков. И время поиска по хеш таблице станет O(n), а при правильной реализации оно должно стремиться к O(1).

Добавлено через 12 минут
Lord03, в каком контексте дано такое задание?

Есть два очень слабо между собой связанных:
1) Хеш для различных хеш таблиц (в том числе словарей) - чтобы ускорить поиск нужного файла по большому их количеству. Такое, например, может использоваться как часть логики файлового менеджера. В этом случае в типовой реализации хеш имеет длину 32 бита.

2) Безопасность (шифрование, крипто и т.п.) - в этом случае хеш должен обеспечить очень высокую сложность обратного вычисления, то есть чтобы для имеющегося файла и его хеша было практически невозможно подобрать другое содержимое с таким же хешем. В этом применении длина хеша обычно начинается от 256 бит и без верхней границы ограничения.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 10:04
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Хеш и ключ это ни одно и тоже.
а разве об этом говорилось?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Естественно, что для каких-то ключей хеши будут одинаковы. И в логику хеш-таблицы уже заложен механизм разрешения таких коллизий.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Да, это, в большинстве случаев, и невозможно, даже в теории, поскольку типично длина хеша значительно меньше длины данных.
Да, реальный мир отличается от идеального, как это ни странно, согласен
Такой несколько условно "ехидный" вопросик: А что есть коллизия?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Нет такого требования.
Да ладно?! Т.е. при различных входных данных одинаковый хэш - это естественное состояние результата алгоритма хэш-функции?!!!
А что за термин такой "устойчивость к коллизиям" - нафига его выдумали? Требования же нет...
Ок, тогда вернемся к началу:
Дайте определение хэш и предъявляемым к нему требованиям (с пруфами желательно)... ну, чтобы не спорить ради спора онли...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 10:27
Цитата Сообщение от YuS_2 Посмотреть сообщение
Т.е. при различных входных данных одинаковый хэш - это естественное состояние результат алгоритма хэш-функции?!!!
Для хеша таблиц - да.
Но желательно уменьшать вероятность таких коллизий, так как они влияют на приближение к O(1).

Цитата Сообщение от YuS_2 Посмотреть сообщение
А что за термин такой "устойчивость к коллизиям" - нафига его выдумали? Требования же нет...
"Устойчивость" не есть эквивалент "недопустимости".

Цитата Сообщение от YuS_2 Посмотреть сообщение
Дайте определение хэш и предъявляемым к нему требованиям (с пруфами желательно).
Могу дать из .Net - это мне ближе и проще там найти: Примечания для тех, кто наследует этот (GetHashCode()) метод
Хэш-функция должна иметь следующие свойства:
  • Если два объекта сравниваются как равные GetHashCode() , метод для каждого объекта должен возвращать одно и то же значение. Однако если два объекта не сравниваются как равные GetHashCode() , методы для этих двух объектов не должны возвращать разные значения.
  • Метод GetHashCode() для объекта должен постоянно возвращать один и тот же хэш-код, если не будет изменений в состоянии объекта, определяющем возвращаемое значение метода System.Object.Equals объекта. Обратите внимание, что это верно только для текущего выполнения приложения и что при повторном запуске приложения может быть возвращен другой хэш-код.
  • Для достижения наилучшей производительности хэш-функция должна генерировать равномерное распределение для всех входных данных, включая входные данные, которые сильно кластеризованы. Подразумевается, что небольшие изменения состояния объекта должны привести к большим изменениям результирующего хэш-кода для достижения наилучшей производительности хэш-таблицы.
  • Вычисления хэш-функций должны быть недорогими.
  • Метод GetHashCode() не должен создавать исключения.
А для крипто-хеша можно и в вики посмотреть: Криптографическая хеш-функция

Добавлено через 8 минут
Например, для массива байт (в том числе, файл тоже можно так представить) вполне нормальный хеш это будет предложенный мною алгоритм:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для файла, например, хеш подобного рода, может вычисляться как набор байт: первый, 1/3 длины, 2/3 длины, последний. И всё это ^ с длиной файла.
Конечно, если среди файлов много "близнецов" (например, это ответ JSON всегда одинаковой длины и между собой отличающиеся незначительно), то коллизий в таком алгоритме может быть очень много.
С другой стороны, обеспечение в общем случае мало-коллизийного метода, потребует учёта значения всех байтов файла. А это очень накладно для вычисления. Что противоречит пункту Вычисления хэш-функций должны быть недорогими, но в некоторых специальных случаях, такое тоже имеет право быть.

Добавлено через 6 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
Такой несколько условно "ехидный" вопросик: А что есть коллизия?
Коллизия хеш функции - это когда для неравных объектов, она выдаёт одинаковый хеш.
Типовое разрешение коллизий в хеш-таблице: там хранятся не сами объекты, а списки объектов. Список выбирается по хеш, а в самом списке уже ищется по равенству ключу. Даже уточню, так как хеши имеют огромную размерность, то реально в хеш таблице используется не сам хеш, а его деление по модулю на длину таблицы.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 10:28
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для хеша таблиц - да.
Приехали...

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но желательно уменьшать вероятность таких коллизий, так как они влияют на приближение к O(1).
Исключительно поэтому?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
"Устойчивость" не есть эквивалент "недопустимости".
Да-да, естественно... я ведь согласился, что реальный мир отличается от идеального. Но стремиться необходимо к идеалу, а что есть идеал в данном случае?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Могу дать из .Net - это мне ближе и проще там найти
Там могут присутствовать ошибки перевода и нераскрытые описания. Необходимо таки точное определение, а не описание неких реализаций с описанием, сделанным в вольном переводе ИИ...
Цитата из этой же ссылки:
Хэш-функции обычно относятся к каждому типу и для уникальности должны использовать по крайней мере одно из полей экземпляра в качестве входных данных.
Такшта...

Цитата Сообщение от Элд Хасп Посмотреть сообщение
А для крипто-хеша можно и в вики посмотреть
Ну, ок, смотрю:
Однако, следует заметить, что хеш у каждого блока должен быть уникальным
и не понимаю... коллизия, однако!
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 10:31
Цитата Сообщение от YuS_2 Посмотреть сообщение
и не понимаю... коллизия, однако!
Дал ответ, но он добавился к предыдущему.
Посмотрите в самом его конце.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 10:36
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Коллизия хеш функции - это когда для неравных объектов, она выдаёт одинаковый хеш.
Нет-нет. Что такое "коллизия", а не "коллизия хэшфункции"?
Внутреннее устройство разрешения коллизий хэшфункций и к чему стремились реализаторы - не интересно, в данном случае. Необходим выработать определение (договорится о термине), то бишь фундамент, что есть хэш, в принципе. А как его реализовать или как реализовано в том или ином случае и насколько близко к идеалу - это уже вторично.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 10:40
Цитата Сообщение от YuS_2 Посмотреть сообщение
Необходимо таки точное определение, а не описание неких реализаций с описанием, сделанным в вольном переводе ИИ...
Можете прочитать на английском: https://learn.microsoft.com/en... inheritors
Ошибок в переводе нет.

Цитата Сообщение от YuS_2 Посмотреть сообщение
и для уникальности должны использовать по крайней мере одно из полей
Не путайте "обеспечение уникальности" и "гарантирование уникальности".
В данном контексте, например, может буллевое поле, которое может дать всего два значения.

По смыслу здесь имеется ввиду, что GetHashCode() определяется на уровне типа данных, но она должна задаваться так, чтобы зависела не только от типа, но и от экземпляра этого типа.

Добавлено через 1 минуту
Цитата Сообщение от YuS_2 Посмотреть сообщение
Что такое "коллизия", а не "коллизия хэшфункции"?
Не понял. Значение слова в русском языке?
https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 11:07
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ошибок в переводе нет.
Ну, я же говорю, это частный случай реализации .Net от Микрософта...
Но, даже так, раз ошибок нет, что означает это:
Hash functions are usually specific to each type and, for uniqueness, must use at least one of the instance fields as input.
?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не путайте "обеспечение уникальности" и "гарантирование уникальности".
Хмм... а зачем и почему вдруг, я что-то путаю? Ну нет же никакой уникальности и все результаты вычисления хэш могут быть идентичными... так ведь? Вы же ясно выразились:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для хеша таблиц - да.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
По смыслу здесь имеется ввиду, что GetHashCode() определяется на уровне типа данных, но она должна задаваться так, чтобы зависела не только от типа, но и от экземпляра этого типа.
Вы углубляетесь в частности... а надо бы найти общее определение термина, т.е. фундамент, основание, из чего необходимо исходить.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не понял. Значение слова в русском языке?
Да, именно.
Поехали дальше, исходя из этого:
от лат. collisio — столкновение
будем считать столкновением/противоречием...
Теперь необходимо понять, столкновение/противоречие чего с чем происходит, при возникновении "коллизии хэшфункции" (одинаковый хэш при различных входных данных)? Ну, т.е. противоречие чему (что с чем конфликтует?) возникает при такой ситуации? Ведь это естественное состояние результата хэшфункции, т.к. требования уникальности отсутствует (с Ваших слов). Пояснение требуется.

Добавлено через 7 минут
Ну и чтобы сильно не флудить, мне импонирует такое определение:
Хэш

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

Особенности хэш-функций
Хэш обладает следующими свойствами:

Необратимость. Из хэш-суммы нельзя восстановить исходные данные ни математическими методами, ни перебором.
Воспроизводимость. Преобразование одних и тех же исходных данных при помощи одной и той же хэш-функции дает на выходе один и тот же результат.
Уникальность. При хэшировании разных исходных данных должны получаться разные хэши, даже если данные различаются незначительно. Ситуация, когда в результате преобразования, скажем, двух разных паролей получается один и тот же хэш, называется коллизией. Высокая вероятность коллизии делает хэш-функцию ненадежной.
ЗЫ Но это неточно...
Как оказалось, поэтому и возникает стремление к одинаковому толкованию термина, чтобы не было беспредметных споров.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 11:49
Цитата Сообщение от YuS_2 Посмотреть сообщение
Ну нет же никакой уникальности и все результаты вычисления хэш могут быть идентичными... так ведь?
Могут.
Но 100% процентная вероятность коллизии приведёт к вырождению хеш-таблицы в линейный список.
Для хорошей работы хеш-таблицы, нужно равномерное (сравнительно) распределение хешей по объектам (экземплярам), но уникальность не нужна. Уточню - уникальность, кончено, является положительным качеством, но только если она не достигается за счёт ухудшения сложности (скорости) вычисления хеша. Для хеш таблицы скорость и равномерность важнее.

Цитата Сообщение от YuS_2 Посмотреть сообщение
Ведь это естественное состояние результата хэшфункции, т.к. требования уникальности отсутствует (с Ваших слов). Пояснение требуется.
Да. Для хеша такая коллизия является "естественным состоянием". Поэтому любая логика работающая с хешем должна обязательно реализовывать и логику разрешения этих коллизий.

Цитата Сообщение от YuS_2 Посмотреть сообщение
мне импонирует такое определение:
Это крипто-хеш.
У поискового хеша (не знаю как правильно его назвать) другие задачи.
Как пример, я уже выше приводил, хеш 32-х разрядного числа - это само число.
https://source.dot.net/#System... t32.cs,108
C#
108
109
110
111
112
        // The absolute value of the int contained.
        public override int GetHashCode()
        {
            return m_value;
        }
Добавлено через 3 минуты
А хеш 64-разрядного это XOR его старшей и младшей части:
https://source.dot.net/#System... t64.cs,105
C#
105
106
107
108
109
        // The value of the lower 32 bits XORed with the uppper 32 bits.
        public override int GetHashCode()
        {
            return unchecked((int)((long)m_value)) ^ (int)(m_value >> 32);
        }
Как сами понимаете в обоих случаях подобрать по хеш нужное число совсем не проблема.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
28.09.2025, 12:04
Цитата Сообщение от Lord03 Посмотреть сообщение
Вычислить хэш файлов - реализовать функцию самостоятельно
FNV1a
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
28.09.2025, 12:05


видимо, не договоримся...
коллизия - противоречие. Если есть противоречие, то должно существовать две позиции - нормальное состояние (отсутствие противоречий) и противоречивое состояние (наличие коллизий):
1. Нормальное состояние - отсутствие совпадения хэш при различных данных (идеальный случай)
2. Коллизия - совпадение хэш при различных данных (реальность).
Вывод: таки коллизия - это не норма, т.к. с ней производят борьбу (разрешение коллизий).
Далее, логика:
Если что-либо не является нормой, то существует требование нормального состояния, то бишь отсутствие коллизий - так? Или там с ветряными мельницами борются? Ну, да ладно... углубляться не будем.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это крипто-хеш.
Это ХЭШ. Где его используют и как - это уже тонкости реализации и применения.
Оттуда же:
Сферы применения хэширования
Преобразование данных в хэши используется в криптографии, а также для верификации и хранения информации. Среди самых популярных применений:

Хранение паролей и аутентификации. Как правило, сервисы хранят массив паролей в виде хэш-сумм, чтобы ни администраторы, ни возможные взломщики не имели к ним непосредственного доступа. Для аутентификации пользователя система хэширует введенный им пароль и сравнивает полученный хэш с тем, который хранит для соответствующего логина.
Проверка данных на целостность.При пересылке сообщений и файлов возможны случайные (из-за сбоев) или намеренные искажения данных. Чтобы убедиться, что этого не произошло, отправитель может переслать получателю хэш-сумму своего сообщения, а получатель — сравнить ее с хэш-суммой сообщения, которое ему пришло.
Поиск зловредов— специалист или защитное решение могут сравнить хэш того или иного файла с базой хэшей вредоносных файлов. Если он совпадет хотя бы с одним хэшем из базы, файл помечается как вредоносный.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У поискового хеша (не знаю как правильно его назвать) другие задачи.
Это уже частности (реализация), а я говорил об определении термина, о фундаменте, основе всего, то бишь. Частности не могут изменить смысл определения самого термина.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,073
Записей в блоге: 2
28.09.2025, 12:28
Цитата Сообщение от YuS_2 Посмотреть сообщение
Это ХЭШ. Где его используют и как - это уже тонкости реализации и применения.
Нет.
Хеш - это некое сокрашённое описание данных.
В зависимости от задачи, это сокращение может быть разным.
Для крипто и для поиска эти сокращения очень сильно различаются. Как по требованиям, так и по использованию.

Цитата Сообщение от YuS_2 Посмотреть сообщение
Оттуда же:
Это функции крипто-хеша. У поискового совсем другие они.

Цитата Сообщение от YuS_2 Посмотреть сообщение
а я говорил об определении термина, о фундаменте, основе всего, то бишь.
Если вам так будет легче, то считайте что крипто-хеш и поисковый-хеш - это Омонимы.
Общего у них только то, что они сокращённо описывают данные.
В остальном они совершено разные сущности.

Добавлено через 1 минуту
Хабр |GetHashCode() и философский камень, или краткий очерк о граблях
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.09.2025, 12:28
Помогаю со студенческими работами здесь

Изменения в записях бд (shelve) и запуск модулей как самостоятельных сценариев
Вечер добрый! Начал постигать Python. Не дают покоя два вопроса: 1.import shelve object =...

Как самостоятельно создать класс-логгер без использования модуля logging?
Класс должен логировать то, какие методы и с какими аргументами у него вызывались и какой был...

Самостоятельное изучение Django
Подскажите, реально ли самостоятельно изучить Django,я туплю конечно, все ли тупят вначале или я...

Научиться Python. Самостоятельно или на платных Курсах? Нужен совет!
Здравствуйте! Нужен совет! Я начал изучать Python пол года назад. Прошел курс на Stepik от...

Самостоятельное обучение программированию
Здравствуйте! Работаю электриком, но нравится программирование. Подскажите, как продуктивнее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью 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 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru