понеділок, 9 лютого 2026 р.

Хешування даних



1. Що таке хешування?

Хешування — це процес перетворення вхідних даних будь-якої довжини у рядок фіксованої довжини, який називається хешем.

Хеш-функція:

Вхідні дані → Хеш-функція → Хеш

Приклад:

Пароль: 123456 Хеш: e10adc3949ba59abbe56e057f20f883e

Навіть незначна зміна у вхідних даних повністю змінює хеш.



2. Навіщо потрібне хешування?

Хешування застосовується для:

  • 🔑 безпечного зберігання паролів

  • 🛡 захисту інформації

  • ✔ перевірки цілісності даних

  • 📦 контролю цілісності файлів

  • 🔍 швидкого пошуку в базах даних

  • 🧬 цифрових підписів та криптографії

  • ⛓ блокчейну


3. Основні властивості хеш-функцій

Якісна хеш-функція повинна мати такі властивості:

ВластивістьОпис
ДетермінованістьОднакові дані → однаковий хеш
НезворотністьНеможливо відновити оригінал з хешу
Стійкість до колізійДуже малоймовірно, що різні дані дадуть однаковий хеш
Лавинний ефектМаленька зміна → повністю інший хеш
Швидкість обчисленняХеш рахується швидко

4. Що таке колізія?

Колізія — це ситуація, коли різні дані мають однаковий хеш.

Дані 1 → Хеш X Дані 2 → Хеш X

Ідеальна хеш-функція повинна зводити ймовірність колізій до мінімуму.


5. Популярні алгоритми хешування

АлгоритмДовжина хешуБезпечність
MD5128 біт❌ небезпечний
SHA-1160 біт❌ застарілий
SHA-256256 біт✔ безпечний
SHA-512512 біт✔ дуже безпечний
bcryptзмінна✔ оптимальний для паролів
Argon2змінна✔ сучасний стандарт

MD5 та SHA-1 не можна використовувати для зберігання паролів!


6. Хешування ≠ Шифрування

ХешуванняШифрування
НезворотнеЗворотне
Не має ключаМає ключ
Для перевіркиДля приховування
Паролі, підписиФайли, повідомлення

Приклад:

  • Паролі — хешують

  • Документи — шифрують


7. Як правильно зберігати паролі?

❌ Неправильно:

123456 → MD5 → зберігати в БД

✅ Правильно:

123456 → bcrypt / Argon2 + salt → зберігати в БД

Salt — це випадковий рядок, який додається до пароля для захисту від атак словником.


8. Де застосовується хешування?

  • Авторизація користувачів

  • Захист баз даних

  • Контроль цілісності файлів (SHA256)

  • Блокчейн (Bitcoin, Ethereum)

  • Антивіруси

  • Електронний цифровий підпис


9. Приклад роботи хеш-функції

Вхід: password SHA256: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd...
Вхід: Password SHA256: 8d969eef6ecad3c29a3a629280e686cf...

👉 Навіть одна велика літера повністю змінює результат.


10. Висновок

Хешування — це основа сучасної кібербезпеки. Без нього неможливо уявити:

  • захист облікових записів

  • безпечні платежі

  • цифрові підписи

  • блокчейн




 Методи хешування + практична робота на Python (10 клас)

1. Основні методи (алгоритми) хешування

🔹 MD5

  • Довжина хешу: 128 біт

  • Швидкий, але небезпечний

  • ❌ Не використовується для паролів

import hashlib hashlib.md5(b"text").hexdigest()

🔹 SHA-1

  • Довжина: 160 біт

  • ❌ Застарілий, небезпечний

hashlib.sha1(b"text").hexdigest()

🔹 SHA-256

  • Довжина: 256 біт

  • ✔ Безпечний, сучасний стандарт

hashlib.sha256(b"text").hexdigest()

🔹 SHA-512

  • Довжина: 512 біт

  • ✔ Дуже високий рівень безпеки

hashlib.sha512(b"text").hexdigest()

🔹 bcrypt (для паролів)

  • Спеціально для захисту паролів

  • ✔ Дуже надійний

pip install bcrypt
import bcrypt bcrypt.hashpw(b"password", bcrypt.gensalt())

(опціонально для поглибленого рівня)


2. Практична робота: Хешування тексту в Python

🎯 Мета:

Навчитися створювати хеші для тексту та порівнювати їх.


✅ Завдання 1. Створити SHA-256 хеш введеного тексту

import hashlib text = input("Введіть текст: ") hash_value = hashlib.sha256(text.encode()).hexdigest() print("SHA-256 хеш:", hash_value)

✅ Завдання 2. Перевірка пароля

import hashlib password = input("Створіть пароль: ") hash_pass = hashlib.sha256(password.encode()).hexdigest() print("Хеш збережено:", hash_pass) check = input("Введіть пароль для перевірки: ") hash_check = hashlib.sha256(check.encode()).hexdigest() if hash_pass == hash_check: print("✅ Пароль правильний") else: print("❌ Пароль неправильний")

✅ Завдання 3. Порівняння різних алгоритмів

import hashlib text = input("Введіть текст: ") print("MD5: ", hashlib.md5(text.encode()).hexdigest()) print("SHA1: ", hashlib.sha1(text.encode()).hexdigest()) print("SHA256: ", hashlib.sha256(text.encode()).hexdigest()) print("SHA512: ", hashlib.sha512(text.encode()).hexdigest())

3. Міні-проєкт для учнів

🔹 Програма «Захист паролів»

Функції:

  • створення хешу пароля

  • перевірка правильності введення

import hashlib def make_hash(text): return hashlib.sha256(text.encode()).hexdigest() password = input("Створіть пароль: ") hash_pass = make_hash(password) while True: check = input("Введіть пароль: ") if make_hash(check) == hash_pass: print("🔓 Доступ дозволено") break else: print("❌ Неправильний пароль")

Немає коментарів:

Дописати коментар