Як працює згортка (хешування)

 Наприклад, я написав повідомлення "привіт" і хочу передати його своєму другові. Але мені треба дізнатися, чи дійшло воно до адресата у незмінному вигляді. Як мені це зробити? Найпростіший варіант — попросити передати повідомлення назад і порівняти, чи воно не змінилося. Багато хто так робить, коли диктують по телефону якісь номери або адреси електронної пошти.


Якщо щось піде не так по дорозі назад, ми не зможемо зрозуміти, чи в порядку початкове повідомлення. До того ж воно може бути довгим: уявіть, що повідомлення містить відео в HD, не передавати всі ці гігабайти назад? Тому чинять інакше: для підтвердження того, що повідомлення дійшло без спотворень, використовують так звану згортку, вона ж «хеш».


Згорнемо слово "привіт" в одне число - наприклад, так:


1. Кожній букві видамо порядковий номер (а = 1 ... я = 33), вийде: 17 18 10 3 6 20.


2. Перемножимо всі числа і отримаємо 1101600. Це і є найпростіша згортка, або хеш.


3. Тепер я після передачі основного повідомлення просто передаю другу ще й згортку, щоб він переконався, що все сходиться.


4. А от якщо повідомлення по дорозі змінилося і перетворилося, наприклад, на «превед», то згортка буде інша: 17*18*6*10*6*5 = 550 800. Друг чекає 1 101 600, а отримав 550 800 — тоді він поскаржиться, і ми зрозуміємо обоє: щось пішло не так.


Зверніть увагу: по дорозі згортку також можна зламати або підмінити. Пакунок не захищає, на відміну від підпису, він лише спрощує і прискорює перевірку цілісності.


Ще один цікавий факт: якщо поміняти літери подекуди, то в нашому прикладі пакунка не зміниться, і це провал. У реальному житті використовують набагато складніше «перемноження» літер, тому результат змінюється від будь-яких змін повідомлення. Більше того, підібрати інше повідомлення з такою ж пакункою стає або нереально, або дуже довго. У цих випадках згортку називають «криптостійкою».


Наприклад, при використанні популярного алгоритму SHA-1, створеного спеціально для виготовлення пакунків, хеш слова «привіт» виглядатиме так:


e24505f94db2b5df4c7c2596b0788e720e073021


А хеш слова «превед» вже ось так:


229d0ee5aabf6af982cdc03a89a56160f1de0e4a


Нічого спільного, правда? Так і задумано.

Як працює згортка (хешування)


Отправить комментарий

0 Комментарии