Skip to content

Лекція 7. Кодування, стиснення і шифрування — це різні речі

Лекція 7. Кодування, стиснення і шифрування — це різні речі

Section titled “Лекція 7. Кодування, стиснення і шифрування — це різні речі”

Рівень 1: Мисливець за даними

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • чітко відрізняти encoding, compression та encryption
  • зрозуміти мету кожного перетворення
  • написати простий навчальний шифр Цезаря

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про кодування даних з лекції 4, щоб чітко відрізняти кодування від стиснення та шифрування.

Кодування: домовитися, як представити дані

Section titled “Кодування: домовитися, як представити дані”

Кодування потрібне, щоб представити інформацію за певними правилами. UTF‑8 кодує символи байтами. Base64 може представити байти набором текстових символів.

Кодування не обов’язково робить дані секретними. Якщо правила відомі, їх зазвичай легко перетворити назад.

Стиснення: прибрати зайве повторення

Section titled “Стиснення: прибрати зайве повторення”

Стиснення намагається представити ті самі дані компактніше. Уяви рядок:

AAAAAAAAAABBBBB

Замість буквального повторення можна було б умовно записати 10×A, 5×B. Реальні алгоритми значно розумніші, але ідея схожа: використати закономірності й повтори.

Стиснення буває без втрат і з втратами. ZIP має відновити дані точно. JPEG може відкинути частину деталей, які менш помітні оку.

Шифрування: зробити дані незрозумілими без секрету

Section titled “Шифрування: зробити дані незрозумілими без секрету”

Шифрування має іншу мету — конфіденційність. Повідомлення перетворюють так, щоб без ключа його було складно прочитати.

Шифр Цезаря, який ми використаємо, сьогодні не є безпечним. Це лише навчальна модель: він показує ідею перетворення символів за правилом. Реальні системи шифрування незрівнянно складніші.

Ось різниця між трьома процесами одним поглядом — важливо не плутати їх:

graph LR
    K["Кодування"] -->|"змінює форму даних,
зворотне можливе"| KT["Є зворотна дія:
декодування"]
    S["Стиснення"] -->|"менше місця,
зменшує розмір"| ST["Є зворотна дія:
розпаковування"]
    SH["Шифрування"] -->|"не читабельно
без секрету"| SHT["Зворотне можливе
тільки з ключем"]

    style K fill:#e1f5fe
    style S fill:#fff3e0
    style SH fill:#fce4ec

UTF‑8: Марко → байти. Мета — однаково зберегти текст.

ZIP: папка з багатьма текстовими файлами → компактніший архів. Мета — менше місця.

Шифрування: повідомлення + секретний ключ → шифротекст. Мета — приховати зміст від стороннього читача.

Python-лабораторія: навчальний Caesar +1

Section titled “Python-лабораторія: навчальний Caesar +1”

Почнемо лише з латинських малих букв, щоб правило було прозорим:

letter = input("Введи маленьку латинську літеру a-z: ")
if letter == "z":
encrypted = "a"
else:
encrypted = chr(ord(letter) + 1)
print("Зашифровано:", encrypted)

Тут ми використовуємо знання з лекції про коди символів. Для a беремо номер через ord(), додаємо 1 і повертаємо символ через chr().

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. перевір програму на літерах a, m, y, z
  2. намалюй на папері відповідності a→b, b→c, …, z→a
  3. додай розшифрування для одного символу зі зсувом назад на 1
  4. поясни, чому цей шифр не підходить для справжніх секретів
  5. для кожного випадку визнач дію: UTF‑8, ZIP, HTTPS — це кодування, стиснення чи шифрування?
  • Яка мета кодування?
  • Яка мета стиснення?
  • Яка мета шифрування?
  • Чому Base64 не варто називати шифруванням?
  • Які попередні знання ми використали для шифру Цезаря?
  • Encoding (кодування) — домовитись, як записати інформацію за правилами (наче домовитися, якими символами писати листа). Не робить дані секретними.
  • Compression (стиснення) — упакувати ті самі дані, щоб вони займали менше місця (наче скласти ковдру, щоб увійшла в шафу).
  • Encryption (шифрування) — перемішати дані так, щоб без секретного ключа їх було складно прочитати.
  • Lossless (без втрат) — стиснення, при якому все відновлюється точно (ZIP).
  • Lossy (з втратами) — стиснення, що відкидає частину деталей, менш помітних оку (JPEG).
  • Ключ — секретне число/правило для шифрування й розшифрування.
  • Шифр Цезаря — навчальне правило зсувати літери на фіксовану кількість кроків.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити різницю між кодуванням, стисненням та шифруванням?
  • Чи знаєш ти, як працює шифр Цезаря?
  • Чи розумієш ти, навіщо потрібні алгоритми для обробки даних?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • encoding, compression та encryption мають різні цілі
  • шифр Цезаря корисний для навчання, але не для реального захисту
  • нові перетворення даних можна розуміти через уже знайомі біти, байти й коди символів

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.