Хеш - це рядок фіксованої довжини (дайджест), що генерується з вхідних даних будь-якого розміру за допомогою хеш-функції. Процес є одностороннім - ви не можете розшифрувати або скасувати хеш, щоб отримати вихідні дані. Ось чому "хеш-шифрування" є неправильною назвою; Хешування не є шифруванням.
Популярні алгоритми хешування включають:
MD5 (застарілий для використання в безпеці)
SHA-1 (не рекомендується)
SHA-256, SHA-512 (частина сімейства SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (для безпечного хешування паролів)
Хешування служить кільком цілям у сфері кібербезпеки та цілісності даних. Основні причини використання хешування включають:
Цілісність даних: гарантує, що дані не були змінені (наприклад, контрольні суми файлів).
Зберігання паролів: безпечно зберігає паролі, порівнюючи хеші, а не зберігаючи фактичні паролі.
Цифрові підписи: хеші підписуються, а не великі документи.
Ефективність: невеликі хеш-значення фіксованого розміру порівнюються швидше, ніж великі блоки даних.
Оскільки хеші є детермінованими та швидкими, вони ідеально підходять для завдань перевірки.
Використання Хеш-функція включає:
Введення даних (наприклад, файлу, рядка або пароля).
Обробку даних за допомогою алгоритму хешування.
Отримання дайджесту, який є рядком фіксованого розміру, що однозначно представляє вхідні дані.
Для захисту паролем:
Поєднайте пароль з сіллю (випадковими даними).
Застосуйте безпечну хеш-функцію (наприклад, bcrypt або Argon2).
Безпечно збережіть отриманий хеш та сіль.
Оскільки хеші не можна скасувати, ви перевіряєте введені дані (наприклад, пароль), хешуючи їх знову та порівнюючи новий хеш зі збереженим.
Хешування слід використовувати, коли:
Потрібно перевірити цілісність даних (наприклад, перевірити на пошкодження або підробку).
Паролі повинні зберігатися безпечно (не зашифровано або у вигляді простого тексту).
Задіяні цифрові підписи та сертифікати (хешування забезпечує автентичність документа).
Необхідне швидке порівняння даних (наприклад, у хеш-таблицях або кешах).
Хешування не підходить, коли вам потрібно відновити вихідні дані пізніше — саме для цього і існує шифрування.