Хеш-функція: що це таке, навіщо потрібна і який буває

Хеш-функція: що це таке, навіщо потрібна і який буває

Нерідко при скачуванні торентів або безпосередньо самих файлів в описі стоїть щось на зразок "ad33e486d0578a892b8vbd8b19e28754" (наприклад, в ex.ua), нерідко з припискою "md5". Це хеш-код - результат, який видає хеш-функція після обробки вхідних даних. У перекладі з англійської хеш позначає плутанину, марихуану, травичку або страву з дрібно нарізаного м 'яса і овочів. Розшифрувати хеш дуже і дуже складно, можна сказати, що практично неможливо. Тоді виникає питання: "Навіщо взагалі потрібні всі ці хеш-функції, якщо вони видають незрозумілу абракадабру, яка ще й не піддається розшифровці?". Про це і йтиметься в цій статті.


Що таке хеш-функція і як вона діє?


Ця функція призначена для перетворення вхідних даних наскільки завгодно великого розміру в результат фіксованої довжини. Сам процес такого перетворення називається хешуванням, а результат - хешем або хеш-кодом. Часом ще використовують слова "відбиток" або "дайджест повідомлення", але на практиці вони зустрічаються набагато рідше. Існує маса різних алгоритмів того, як можна перетворити будь-який масив даних на якусь послідовність символів певної довжини. Найбільше поширення отримав алгоритм під назвою md5, який був розроблений ще в 1991 році. Незважаючи на те, що на сьогоднішній день md5 є дещо застарілим і до використання не рекомендується, він досі все ще в ходу і часто замість слова "хеш-код", на сайтах просто пишуть md5 і вказують сам код.

Навіщо потрібна хеш-функція?

Знаючи результат, практично неможливо визначити вихідні дані, але одні й ті ж вхідні дані дають однаковий підсумок. Тому хеш-функція (її ще називають функція згортки) часто використовується для зберігання дуже важливої інформації, такої як пароль, логін, номер посвідчення та інша персональна інформація. Замість порівняння відомостей, що вводяться користувачем, з тими, які зберігаються в базі даних, відбувається зіставлення їх хешів. Це дає гарантію, що при випадковому витоку інформації ніхто не зможе скористатися важливими даними для своїх цілей. Шляхом порівняння хеш-коду також зручно перевіряти правильність завантаження файлів з інтернету, особливо якщо під час скачування відбувалися перебої зв 'язку.

Хеш-функції: якими вони бувають

Залежно від свого призначення хеш-функція може бути одного з трьох типів:

1. Функція для перевірки цілісності інформації


Коли відбувається передача даних по мережі, відбувається розрахунок хешу пакета, і цей результат також передається разом з файлом. При прийомі знову обчислюється хеш-код і порівнюється з отриманим по мережі значенням. Якщо код не збігається, то це говорить про помилки, і зіпсований пакет знову буде переданий. У такої функції швидка швидкість розрахунку, але мала кількість хеш значень і погана стабільність. Приклад такого типу: CRC32, у якої лише 232 значення, що відрізняються між собою.

2. Криптографічна функція

Цей тип використовується для захисту від несанкціонованого доступу (НД). Вони дозволяють перевірити, чи не відбулося спотворення даних в результаті ПД під час передачі файлів по мережі. Справжній хеш у цьому випадку загальнодоступний, а хеш отриманого файлу можна обчислити за допомогою безлічі різних програм. У таких функцій довгий і стабільний термін роботи, а пошук колізій (можливих збігів результату від різних вихідних даних) дуже ускладнений. Саме такі функції використовують для зберігання в БД паролів (SH1, SH2, MD5) та іншої цінної інформації.

3. Функція для створення ефективної структури даних

Її метою є компактна і досить впорядкована організація відомостей у спеціальній структурі, яка носить назву хеш-таблиці. За допомогою цієї таблиці ви можете додавати нову інформацію, вилучати інформацію та шукати потрібні дані з високою швидкістю.