Хеш-фу́нкція, або геш-фу́нкція — функція, що перетворює вхідні дані будь-якого (як правило великого) розміру в дані фіксованого розміру.
Хешування (гешування, англ. hashing) — перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої довжини. Такі перетворення також називаються хеш-функціями, або функціями згортання, а їхні результати називають хешем, хеш-кодом, хеш-сумою, або дайджестом повідомлення (англ. message digest).
Хеш-функція використовується зокрема у структурах даних — хеш-таблицях, широко вживаних у програмному забезпеченні для швидкого пошуку даних. Хеш-функції використовуються для оптимізації таблиць та баз даних користуючись з того, що в однакових записів однакові значення хеш-функції. Такий підхід пошуку дублікатів ефективний у файлах великого розміру. Прикладом цього буде знаходження подібних ділянок у послідовностях ДНК. Криптографічна геш-функція дозволяє легко перевірити, що деякі вхідні дані зіставляються із заданим значенням хешу, але, якщо вхідні дані невідомі, то навмисно важко відновити вхідне значення (або еквівалентну альтернативу), знаючи збережене значення хеш-функції. Це використовується для забезпечення цілісності переданих даних, і є будівельним блоком для HMACs, які забезпечують аутентифікацію повідомлень.
Хеш-функції пов'язані (і їх часто плутають) з контрольною сумою, контрольними цифрами, відбитками пальців, рандомізацією функцій, кодами, що виправляють помилки, і з шифрами. Хоча ці поняття певною мірою збігаються, кожне з них має свою власну сферу застосування і вимоги та є розробленим і оптимізованим по-різному.
Історія
Дональд Кнут приписує першу систематичну ідею гешування співробітнику IBM [en], який запропонував геш-кодування у січні 1953 року.
У 1956 році [en] у своїй роботі «Computers and automation» першим представив концепцію гешування такою, якою її знає більшість програмістів у наш час. Думи розглядав гешування, як рішення «Проблеми словника», а також запропонував використовувати як геш-адресу залишок від ділення на просте число.
Першою значною роботою, яка була пов'язана з пошуком у великих файлах, була стаття [en] в IBM Journal of Research and Development 1957 року, в якій він визначив відкриту адресацію, а також вказав на погіршення продуктивності при видаленні. Через шість років була опублікована робота [de], у якій в значній мірі досліджувалися хеш-функції. Протягом кількох наступних років гешування широко використовувалося, однак не було опубліковано жодної значної роботи.
У 1967 році гешування в сучасному значенні згадано в книзі Херберта Хеллерман «Принципи цифрових обчислювальних систем». У 1968 році [en] опублікував у Communications of the ACM великий огляд про гешування. Ця робота вважається публікацією, що вводить поняття про гешуванні в науковий обіг і остаточно закріпляє серед фахівців термін «геш».
До початку 1990-х років еквівалентом терміну «гешування», завдяки роботам Андрія Єршова, використовувалося слово рос. «расстановка», а для колізій використовувався термін рос. «конфликт» (Єршов використовував «расстановку» з 1956, а також в російськомовному виданні книги Ніклауса Вірта «Алгоритми та структури даних» (1989) використовується цей термін). Проте жоден з цих варіантів не прижився, і в літературі використовується переважно термін «гешування».
Опис
Хешування застосовується для побудови асоціативних масивів, пошуку дублікатів в серіях наборів даних, побудови унікальних ідентифікаторів для наборів даних, контрольного підсумовування з метою виявлення випадкових або навмисних помилок при зберіганні або передачі, для зберігання паролів в системах захисту (у цьому випадку доступ до області пам'яті, де знаходяться паролі, не дозволяє відновити сам пароль), при виробленні електронного підпису (на практиці часто підписується не саме повідомлення, а його геш-образ).
У загальному випадку однозначної відповідності між вихідними даними і геш-кодом немає в силу того, що кількість значень геш-функцій менша, ніж число варіантів значень вхідного масиву. Існує безліч масивів з різним вмістом, що дають однакові геш-коди — так звані колізії. Імовірність виникнення колізій відіграє важливу роль в оцінці якості геш-функцій.
Розроблено багато алгоритмів гешування з різними властивостями (розрядність, обчислювальна складність, криптостійкість тощо). Вибір тієї чи іншої геш-функції визначається специфікою розв'язуваної задачі. Найпростішими прикладами геш-функцій можуть служити контрольна сума або CRC.
Види геш-функцій
Хороша геш-функція повинна задовольняти двом властивостям:
- Швидко обчислюватися;
- Мінімізувати кількість колізій
Припустимо, для визначеності, що — кількість ключів, а геш-функція має не більше різних значень:
Як приклад «поганої» геш-функції можна навести функцію з , яка десятизначному натуральному числу співставляє три цифри, обрані з середини двадцятизначного квадрата числа . Здавалося б, значення геш-кодів повинні рівномірно розподілитися між «000» і «999», але для реальних даних такий метод підходить лише у тому випадку, якщо ключі не мають великої кількості нулів зліва чи справа.
Однак, існує декілька інших простих та надійних методів, на яких базується багато геш-функцій.
Геш-функції на основі ділення
Перший метод полягає у тому, що ми використовуємо як геш — залишок від ділення на , де — це кількість всіх можливих гешів:
При цьому очевидно, що при парному значення функції буде парним, при парному . А непарним — при непарному, що може призвести до значного зсуву даних в файлах. Також не слід використовувати як базу системи числення комп'ютера, оскільки геш-код буде залежати тільки від кількох цифр числа , розташованих праворуч, що призведе до великої кількості колізій. На практиці зазвичай обирають просте — в більшості випадків цей вибір цілком задовільний.
Ще слід сказати про метод гешування, в основі якого полягає ділення на поліном по модулю два. У даному методі також повинна бути ступенем двійки, а бінарні ключі () мають вигляд поліномів. У цьому випадку як геш-код беруться значення коефіцієнтів полінома, отриманого як залишок від ділення на заздалегідь обраний поліном ступеня :
При правильному виборі такий спосіб гарантує відсутність колізій між майже однаковими ключами.
Мультиплікативна схема гешування
Другий метод полягає у виборі деякої цілої константи , взаємно простої з , де — кількість можливих варіантів значень у вигляді машинного слова (в комп'ютерах IBM PC ). Тоді маємо змогу взяти геш-функцію виду:
У цьому випадку, на комп'ютері з двійковою системою числення, являє собою ступінь двійки, а складатиметься зі старших бітів правої половини добутку .
Серед переваг цих двох методів варто відзначити, що вони вигідно використовують те, що реальні ключі невипадкові. Наприклад, у тому випадку, якщо ключі являють собою арифметичну прогресію (припустимо послідовність назв «ім'я1», «ім'я2», «ім'я3»). Мультиплікативний метод відобразить арифметичну прогресію у наближену арифметичну прогресію різних геш-значень, що зменшує кількість колізій у порівнянні з випадковою ситуацією.
Однією з варіацій даного методу є гешування Фібоначчі, засноване на властивостях золотого перетину. Як тут обирається найближче до ціле число, взаємно просте з
Гешування рядків змінної довжини
Вищевикладені методи застосовуються і в тому випадку, коли нам необхідно розглядати ключі, що складаються з декількох слів або ключі зі змінною довжиною. Наприклад, можна скомбінувати слова в одне за допомогою додавання за модулем або операції «додавання по модулю 2». Одним з алгоритмів, що працюють за таким принципом, є геш-функція Пірсона.
[en] — алгоритм, запропонований Пітером Пірсоном (англ. Peter Pearson) для процесорів з 8-бітними регістрами, завданням якого є швидке обчислення геш-коду для рядка довільної довжини. На вхід функція отримує слово , що складається з символів, кожен розміром 1 байт, і повертає значення в діапазоні від 0 до 255. При цьому значення геш-коду залежить від кожного символу вхідного слова.
Алгоритм можна описати таким псевдокодом, який отримує на вхід рядок і використовує таблицю перестановок
h := 0 For each c in W loop index := h xor c h := T [index] End loop' Return h
Серед переваг алгоритму слід зазначити:
- простоту обчислення;
- не існує таких вхідних даних, для яких імовірність колізії найбільша;
- можливість модифікації в ідеальну геш-функцію.
Як альтернативний спосіб гешування ключів, котрі складаються з символів (), можна запропонувати обчислення
Застосування геш-функцій
Геш-функції широко використовуються в криптографії, а також у багатьох структурах даних — Геш-таблицях, фільтрах Блума і декартових деревах.
Криптографічні геш-функції
Серед великої кількості геш-функцій прийнято виділяти криптографічно стійкі, застосовувані в криптографії, оскільки на них накладаються додаткові вимоги. Для того, щоб геш-функція вважалася криптографічно стійкою, вона повинна задовільняти трьом основним вимогам, на яких засновано більшість застосувань геш-функцій в криптографії:
- Незворотність : для заданого значення геш-функції m має бути обчислювально неможливо знайти блок даних , для якого .
- Стійкість колізіям першого роду : для заданого повідомлення M має бути обчислювально неможливо підібрати інше повідомлення N , для якого .
- Стійкість до колізій другого роду : має бути обчислювально неможливо підібрати пару повідомлень , що мають однаковий геш.
Дані вимоги залежні один від одного:
- Оборотна функція нестійка до колізій першого і другого роду.
- Функція, нестійка до колізій першого роду, нестійка до колізій другого роду; зворотне невірно.
Слід зазначити, що не доведене існування незворотних геш-функцій, для яких обчислення будь-якого прообразу заданого значення геш-функції теоретично неможливо. Зазвичай знаходження зворотного значення є лише обчислювально складним завданням.
Атака «днів народження» дозволяє знаходити колізії для геш-функції з довжиною значень n бітів в середньому за приблизно обчислень геш-функції. Тому n -бітна геш-функція вважається крипостійкою, якщо обчислювальна складність знаходження колізій для неї близька до .
Для криптографічних геш-функцій також важливо, щоб при щонайменшій зміні аргументу значення функції сильно змінювалося (лавинний ефект). Зокрема, значення гешу не повинно давати витоку інформації, навіть про окремі біти аргументу. Ця вимога є запорукою криптостійкості алгоритмів гешування, гешуючих пароль користувача для отримання ключа.
Гешування часто використовується в алгоритмах електронно-цифрового підпису, де шифрується не саме повідомлення, а його геш-код, що зменшує час обчислення, а також підвищує криптостійкість. Також в більшості випадків, замість паролів зберігаються значення їх геш-кодів.
Геометричне гешування
Геометричне гешування (англ. Geometric hashing) — широко застосовуваний у комп'ютерній графіці й обчислювальній геометрії метод для вирішення завдань на площині або в тривимірному просторі, наприклад, для знаходження найближчих пар в множині точок або для пошуку однакових зображень. Геш-функція в даному методі зазвичай отримує на вхід якийсь метричний простір і розділяє його, створюючи сітку з клітин. Таблиця у цьому випадку є масивом з двома або більше індексами і має назву файл сітки (англ. Grid file). Геометричне гешування також застосовується в телекомунікаціях при роботі з багатовимірними сигналами.
Прискорення пошуку даних
Геш-таблиця — це структура даних, що дозволяє зберігати пари виду (ключ, геш-код) і підтримує операції пошуку, вставки та видалення елементів. Завданням геш-таблиць є прискорення пошуку, наприклад, у випадку записів до текстових полів в базі даних може розраховуватися їх геш код і дані можуть поміщатися у розділ, що відповідає цьому геш-коду. Тоді при пошуку даних треба буде спочатку обчислити геш-код тексту і відразу стане відомо, в якому розділі їх треба шукати, тобто, шукати треба буде не по всій базі, а тільки по одному її розділу (це сильно прискорює пошук).
Побутовим аналогом гешування у цьому випадку може служити розміщення слів у словнику за алфавітом. Перша літера слова є його геш-кодом, і при пошуку ми переглядаємо не весь словник, а тільки потрібну літеру.
Див. також
- (Список криптографічних алгоритмів)
- Фільтр Блума — інтенсивно використовує геш-функції
Деякі алгоритми гешування
Примітки
- хеш-функція // «Словники України» online / Український мовно-інформаційний фонд НАН України.
- Геш-функція. Картка даних терміну : [арх. 23.09.2017] // Українське агентство зі стандартизації. — Дата звернення: 23.09.2017.
- Аналогічно до геш-таблиця // Англійсько-український словник з математики та інформатики / уклад. Є. Мейнарович, М. Кратко. — 2010.
- Ніклаус Вірт (2004) [1975]. Algorithms and Data Structures (PDF). ETH Zürich. с. 366.(англ.)
- Herbert Hellerman. Digital Computer System Principles. N.Y .: McGraw-Hill, 1967, 424 pp.
- Дональд Кнут. Мистецтво програмування.
- Брюс Шнаейр та Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі.
Джерела
- Томас Кормен; Чарльз Лейзерсон, Рональд Рівест, Кліфорд Стайн (2009) [1990]. 11.3 Геш-функції. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Hesh fu nkciya abo gesh fu nkciya funkciya sho peretvoryuye vhidni dani bud yakogo yak pravilo velikogo rozmiru v dani fiksovanogo rozmiru Hesh funkciya stavit u vidpovidnist imenam cile chislo vid 0 do 15 Ye superechnist koliziya mizh John Smith ta Sandra Dee yakim vidpovidaye odnakove znachennya Heshuvannya geshuvannya angl hashing peretvorennya vhidnogo masivu danih dovilnoyi dovzhini u vihidnij bitovij ryadok fiksovanoyi dovzhini Taki peretvorennya takozh nazivayutsya hesh funkciyami abo funkciyami zgortannya a yihni rezultati nazivayut heshem hesh kodom hesh sumoyu abo dajdzhestom povidomlennya angl message digest Hesh funkciya vikoristovuyetsya zokrema u strukturah danih hesh tablicyah shiroko vzhivanih u programnomu zabezpechenni dlya shvidkogo poshuku danih Hesh funkciyi vikoristovuyutsya dlya optimizaciyi tablic ta baz danih koristuyuchis z togo sho v odnakovih zapisiv odnakovi znachennya hesh funkciyi Takij pidhid poshuku dublikativ efektivnij u fajlah velikogo rozmiru Prikladom cogo bude znahodzhennya podibnih dilyanok u poslidovnostyah DNK Kriptografichna gesh funkciya dozvolyaye legko pereviriti sho deyaki vhidni dani zistavlyayutsya iz zadanim znachennyam heshu ale yaksho vhidni dani nevidomi to navmisno vazhko vidnoviti vhidne znachennya abo ekvivalentnu alternativu znayuchi zberezhene znachennya hesh funkciyi Ce vikoristovuyetsya dlya zabezpechennya cilisnosti peredanih danih i ye budivelnim blokom dlya HMACs yaki zabezpechuyut autentifikaciyu povidomlen Hesh funkciyi pov yazani i yih chasto plutayut z kontrolnoyu sumoyu kontrolnimi ciframi vidbitkami palciv randomizaciyeyu funkcij kodami sho vipravlyayut pomilki i z shiframi Hocha ci ponyattya pevnoyu miroyu zbigayutsya kozhne z nih maye svoyu vlasnu sferu zastosuvannya i vimogi ta ye rozroblenim i optimizovanim po riznomu IstoriyaDonald Knut pripisuye pershu sistematichnu ideyu geshuvannya spivrobitniku IBM en yakij zaproponuvav gesh koduvannya u sichni 1953 roku U 1956 roci en u svoyij roboti Computers and automation pershim predstaviv koncepciyu geshuvannya takoyu yakoyu yiyi znaye bilshist programistiv u nash chas Dumi rozglyadav geshuvannya yak rishennya Problemi slovnika a takozh zaproponuvav vikoristovuvati yak gesh adresu zalishok vid dilennya na proste chislo Pershoyu znachnoyu robotoyu yaka bula pov yazana z poshukom u velikih fajlah bula stattya en v IBM Journal of Research and Development 1957 roku v yakij vin viznachiv vidkritu adresaciyu a takozh vkazav na pogirshennya produktivnosti pri vidalenni Cherez shist rokiv bula opublikovana robota de u yakij v znachnij miri doslidzhuvalisya hesh funkciyi Protyagom kilkoh nastupnih rokiv geshuvannya shiroko vikoristovuvalosya odnak ne bulo opublikovano zhodnoyi znachnoyi roboti U 1967 roci geshuvannya v suchasnomu znachenni zgadano v knizi Herberta Hellerman Principi cifrovih obchislyuvalnih sistem U 1968 roci en opublikuvav u Communications of the ACM velikij oglyad pro geshuvannya Cya robota vvazhayetsya publikaciyeyu sho vvodit ponyattya pro geshuvanni v naukovij obig i ostatochno zakriplyaye sered fahivciv termin gesh Do pochatku 1990 h rokiv ekvivalentom terminu geshuvannya zavdyaki robotam Andriya Yershova vikoristovuvalosya slovo ros rasstanovka a dlya kolizij vikoristovuvavsya termin ros konflikt Yershov vikoristovuvav rasstanovku z 1956 a takozh v rosijskomovnomu vidanni knigi Niklausa Virta Algoritmi ta strukturi danih 1989 vikoristovuyetsya cej termin Prote zhoden z cih variantiv ne prizhivsya i v literaturi vikoristovuyetsya perevazhno termin geshuvannya OpisHeshuvannya zastosovuyetsya dlya pobudovi asociativnih masiviv poshuku dublikativ v seriyah naboriv danih pobudovi unikalnih identifikatoriv dlya naboriv danih kontrolnogo pidsumovuvannya z metoyu viyavlennya vipadkovih abo navmisnih pomilok pri zberiganni abo peredachi dlya zberigannya paroliv v sistemah zahistu u comu vipadku dostup do oblasti pam yati de znahodyatsya paroli ne dozvolyaye vidnoviti sam parol pri viroblenni elektronnogo pidpisu na praktici chasto pidpisuyetsya ne same povidomlennya a jogo gesh obraz U zagalnomu vipadku odnoznachnoyi vidpovidnosti mizh vihidnimi danimi i gesh kodom nemaye v silu togo sho kilkist znachen gesh funkcij mensha nizh chislo variantiv znachen vhidnogo masivu Isnuye bezlich masiviv z riznim vmistom sho dayut odnakovi gesh kodi tak zvani koliziyi Imovirnist viniknennya kolizij vidigraye vazhlivu rol v ocinci yakosti gesh funkcij Rozrobleno bagato algoritmiv geshuvannya z riznimi vlastivostyami rozryadnist obchislyuvalna skladnist kriptostijkist tosho Vibir tiyeyi chi inshoyi gesh funkciyi viznachayetsya specifikoyu rozv yazuvanoyi zadachi Najprostishimi prikladami gesh funkcij mozhut sluzhiti kontrolna suma abo CRC Vidi gesh funkcijHorosha gesh funkciya povinna zadovolnyati dvom vlastivostyam Shvidko obchislyuvatisya Minimizuvati kilkist kolizij Pripustimo dlya viznachenosti sho K displaystyle K kilkist klyuchiv a gesh funkciya h k displaystyle h k maye ne bilshe M displaystyle M riznih znachen k 0 h k lt M displaystyle forall k 0 leqslant h k lt M Yak priklad poganoyi gesh funkciyi mozhna navesti funkciyu z M 1000 displaystyle M 1000 yaka desyatiznachnomu naturalnomu chislu K displaystyle K spivstavlyaye tri cifri obrani z seredini dvadcyatiznachnogo kvadrata chisla K displaystyle K Zdavalosya b znachennya gesh kodiv povinni rivnomirno rozpodilitisya mizh 000 i 999 ale dlya realnih danih takij metod pidhodit lishe u tomu vipadku yaksho klyuchi ne mayut velikoyi kilkosti nuliv zliva chi sprava Odnak isnuye dekilka inshih prostih ta nadijnih metodiv na yakih bazuyetsya bagato gesh funkcij Gesh funkciyi na osnovi dilennya Pershij metod polyagaye u tomu sho mi vikoristovuyemo yak gesh zalishok vid dilennya na M displaystyle M de M displaystyle M ce kilkist vsih mozhlivih geshiv h K K mod M displaystyle h K K mod M Pri comu ochevidno sho pri parnomu M displaystyle M znachennya funkciyi bude parnim pri parnomu K displaystyle K A neparnim pri neparnomu sho mozhe prizvesti do znachnogo zsuvu danih v fajlah Takozh ne slid vikoristovuvati yak M displaystyle M bazu sistemi chislennya komp yutera oskilki gesh kod bude zalezhati tilki vid kilkoh cifr chisla K displaystyle K roztashovanih pravoruch sho prizvede do velikoyi kilkosti kolizij Na praktici zazvichaj obirayut proste M displaystyle M v bilshosti vipadkiv cej vibir cilkom zadovilnij She slid skazati pro metod geshuvannya v osnovi yakogo polyagaye dilennya na polinom po modulyu dva U danomu metodi M displaystyle M takozh povinna buti stupenem dvijki a binarni klyuchi K k n 1 k n 2 k 0 displaystyle K k n 1 k n 2 k 0 mayut viglyad polinomiv U comu vipadku yak gesh kod berutsya znachennya koeficiyentiv polinoma otrimanogo yak zalishok vid dilennya K displaystyle K na zazdalegid obranij polinom P displaystyle P stupenya m displaystyle m K x mod P x h m 1 x m 1 h 1 x h 0 displaystyle K x mod P x h m 1 x m 1 dots h 1 x h 0 h x h m 1 h 1 h 0 displaystyle h x h m 1 h 1 h 0 Pri pravilnomu vibori P x displaystyle P x takij sposib garantuye vidsutnist kolizij mizh majzhe odnakovimi klyuchami Multiplikativna shema geshuvannya Drugij metod polyagaye u vibori deyakoyi ciloyi konstanti A displaystyle A vzayemno prostoyi z w displaystyle w de w displaystyle w kilkist mozhlivih variantiv znachen u viglyadi mashinnogo slova v komp yuterah IBM PC 2 32 displaystyle 2 32 Todi mayemo zmogu vzyati gesh funkciyu vidu h K M A w K displaystyle h K left M left lfloor frac A w K right rfloor right U comu vipadku na komp yuteri z dvijkovoyu sistemoyu chislennya M displaystyle M yavlyaye soboyu stupin dvijki a h K displaystyle h K skladatimetsya zi starshih bitiv pravoyi polovini dobutku A K displaystyle A K Sered perevag cih dvoh metodiv varto vidznachiti sho voni vigidno vikoristovuyut te sho realni klyuchi nevipadkovi Napriklad u tomu vipadku yaksho klyuchi yavlyayut soboyu arifmetichnu progresiyu pripustimo poslidovnist nazv im ya1 im ya2 im ya3 Multiplikativnij metod vidobrazit arifmetichnu progresiyu u nablizhenu arifmetichnu progresiyu riznih gesh znachen sho zmenshuye kilkist kolizij u porivnyanni z vipadkovoyu situaciyeyu Odniyeyu z variacij danogo metodu ye geshuvannya Fibonachchi zasnovane na vlastivostyah zolotogo peretinu Yak A displaystyle A tut obirayetsya najblizhche do f 1 w displaystyle varphi 1 w cile chislo vzayemno proste z w displaystyle w Geshuvannya ryadkiv zminnoyi dovzhini Vishevikladeni metodi zastosovuyutsya i v tomu vipadku koli nam neobhidno rozglyadati klyuchi sho skladayutsya z dekilkoh sliv abo klyuchi zi zminnoyu dovzhinoyu Napriklad mozhna skombinuvati slova v odne za dopomogoyu dodavannya za modulem w displaystyle w abo operaciyi dodavannya po modulyu 2 Odnim z algoritmiv sho pracyuyut za takim principom ye gesh funkciya Pirsona en algoritm zaproponovanij Piterom Pirsonom angl Peter Pearson dlya procesoriv z 8 bitnimi registrami zavdannyam yakogo ye shvidke obchislennya gesh kodu dlya ryadka dovilnoyi dovzhini Na vhid funkciya otrimuye slovo W displaystyle W sho skladayetsya z n displaystyle n simvoliv kozhen rozmirom 1 bajt i povertaye znachennya v diapazoni vid 0 do 255 Pri comu znachennya gesh kodu zalezhit vid kozhnogo simvolu vhidnogo slova Algoritm mozhna opisati takim psevdokodom yakij otrimuye na vhid ryadok W displaystyle W i vikoristovuye tablicyu perestanovok T displaystyle T h 0 For each c in W loop index h xor c h T index End loop Return h Sered perevag algoritmu slid zaznachiti prostotu obchislennya ne isnuye takih vhidnih danih dlya yakih imovirnist koliziyi najbilsha mozhlivist modifikaciyi v idealnu gesh funkciyu Yak alternativnij sposib geshuvannya K displaystyle K klyuchiv kotri skladayutsya z l displaystyle l simvoliv K x 1 x 2 x l displaystyle K x 1 x 2 x l mozhna zaproponuvati obchislennya h K h 1 x 1 h 2 x 2 h l x l mod M displaystyle h K h 1 x 1 h 2 x 2 h l x l mod M Zastosuvannya gesh funkcijGesh funkciyi shiroko vikoristovuyutsya v kriptografiyi a takozh u bagatoh strukturah danih Gesh tablicyah filtrah Bluma i dekartovih derevah Kriptografichni gesh funkciyi Dokladnishe Kriptografichna gesh funkciya Sered velikoyi kilkosti gesh funkcij prijnyato vidilyati kriptografichno stijki zastosovuvani v kriptografiyi oskilki na nih nakladayutsya dodatkovi vimogi Dlya togo shob gesh funkciya H displaystyle H vvazhalasya kriptografichno stijkoyu vona povinna zadovilnyati trom osnovnim vimogam na yakih zasnovano bilshist zastosuvan gesh funkcij v kriptografiyi Nezvorotnist dlya zadanogo znachennya gesh funkciyi m maye buti obchislyuvalno nemozhlivo znajti blok danih X displaystyle X dlya yakogo H X m displaystyle H X m Stijkist koliziyam pershogo rodu dlya zadanogo povidomlennya M maye buti obchislyuvalno nemozhlivo pidibrati inshe povidomlennya N dlya yakogo H N H M displaystyle H N H M Stijkist do kolizij drugogo rodu maye buti obchislyuvalno nemozhlivo pidibrati paru povidomlen M M displaystyle M M sho mayut odnakovij gesh Dani vimogi zalezhni odin vid odnogo Oborotna funkciya nestijka do kolizij pershogo i drugogo rodu Funkciya nestijka do kolizij pershogo rodu nestijka do kolizij drugogo rodu zvorotne nevirno Slid zaznachiti sho ne dovedene isnuvannya nezvorotnih gesh funkcij dlya yakih obchislennya bud yakogo proobrazu zadanogo znachennya gesh funkciyi teoretichno nemozhlivo Zazvichaj znahodzhennya zvorotnogo znachennya ye lishe obchislyuvalno skladnim zavdannyam Ataka dniv narodzhennya dozvolyaye znahoditi koliziyi dlya gesh funkciyi z dovzhinoyu znachenn bitiv v serednomu za priblizno 2 n 2 displaystyle 2 n 2 obchislen gesh funkciyi Tomu n bitna gesh funkciya vvazhayetsya kripostijkoyu yaksho obchislyuvalna skladnist znahodzhennya kolizij dlya neyi blizka do 2 n 2 displaystyle 2 n 2 Dlya kriptografichnih gesh funkcij takozh vazhlivo shob pri shonajmenshij zmini argumentu znachennya funkciyi silno zminyuvalosya lavinnij efekt Zokrema znachennya geshu ne povinno davati vitoku informaciyi navit pro okremi biti argumentu Cya vimoga ye zaporukoyu kriptostijkosti algoritmiv geshuvannya geshuyuchih parol koristuvacha dlya otrimannya klyucha Geshuvannya chasto vikoristovuyetsya v algoritmah elektronno cifrovogo pidpisu de shifruyetsya ne same povidomlennya a jogo gesh kod sho zmenshuye chas obchislennya a takozh pidvishuye kriptostijkist Takozh v bilshosti vipadkiv zamist paroliv zberigayutsya znachennya yih gesh kodiv Geometrichne geshuvannya Geometrichne geshuvannya angl Geometric hashing shiroko zastosovuvanij u komp yuternij grafici j obchislyuvalnij geometriyi metod dlya virishennya zavdan na ploshini abo v trivimirnomu prostori napriklad dlya znahodzhennya najblizhchih par v mnozhini tochok abo dlya poshuku odnakovih zobrazhen Gesh funkciya v danomu metodi zazvichaj otrimuye na vhid yakijs metrichnij prostir i rozdilyaye jogo stvoryuyuchi sitku z klitin Tablicya u comu vipadku ye masivom z dvoma abo bilshe indeksami i maye nazvu fajl sitki angl Grid file Geometrichne geshuvannya takozh zastosovuyetsya v telekomunikaciyah pri roboti z bagatovimirnimi signalami Priskorennya poshuku danih Gesh tablicya ce struktura danih sho dozvolyaye zberigati pari vidu klyuch gesh kod i pidtrimuye operaciyi poshuku vstavki ta vidalennya elementiv Zavdannyam gesh tablic ye priskorennya poshuku napriklad u vipadku zapisiv do tekstovih poliv v bazi danih mozhe rozrahovuvatisya yih gesh kod i dani mozhut pomishatisya u rozdil sho vidpovidaye comu gesh kodu Todi pri poshuku danih treba bude spochatku obchisliti gesh kod tekstu i vidrazu stane vidomo v yakomu rozdili yih treba shukati tobto shukati treba bude ne po vsij bazi a tilki po odnomu yiyi rozdilu ce silno priskoryuye poshuk Pobutovim analogom geshuvannya u comu vipadku mozhe sluzhiti rozmishennya sliv u slovniku za alfavitom Persha litera slova ye jogo gesh kodom i pri poshuku mi pereglyadayemo ne ves slovnik a tilki potribnu literu Div takozhSpisok kriptografichnih algoritmiv Filtr Bluma intensivno vikoristovuye gesh funkciyi Deyaki algoritmi geshuvannya HAVAL MD2 MD4 MD5 N Hash RIPEMD 160 Tiger WhirlpoolPrimitkihesh funkciya Slovniki Ukrayini online Ukrayinskij movno informacijnij fond NAN Ukrayini Gesh funkciya Kartka danih terminu arh 23 09 2017 Ukrayinske agentstvo zi standartizaciyi Data zvernennya 23 09 2017 Analogichno do gesh tablicya Anglijsko ukrayinskij slovnik z matematiki ta informatiki uklad Ye Mejnarovich M Kratko 2010 Niklaus Virt 2004 1975 Algorithms and Data Structures PDF ETH Zurich s 366 angl Herbert Hellerman Digital Computer System Principles N Y McGraw Hill 1967 424 pp Donald Knut Mistectvo programuvannya Bryus Shnaejr ta Prikladna kriptografiya Protokoli algoritmi vihidni teksti na movi Si DzherelaTomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 11 3 Gesh funkciyi Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi