Skip to content

Implementation of Hamming code for error detection and correction. This Python application encodes/decodes text files using the 'ASCII -> binary -> Hamming code' scheme, allowing variable information block size (m). Developed for Work 1 in "Program and Data Security".

Notifications You must be signed in to change notification settings

ArtemZarubin/hamming-code

Repository files navigation

Лабораторна робота №1: Кодер/Декодер Хемінга (Hamming Coder/Decoder)

Цей репозиторій містить реалізацію коду Хемінга на Python для виявлення та виправлення одиночних помилок у даних. Додаток дозволяє кодувати текстові файли за схемою "ASCII -> двійковий код -> код Хемінга" та декодувати їх назад, відновлюючи вихідний текст.

Проект розроблено в рамках Лабораторної роботи №1 з дисципліни "Безпека програм та даних".

Можливості

  • Кодування: Перетворення текстового файлу (ASCII) у файл, закодований кодом Хемінга (текстове представлення бітів '0' та '1').
  • Декодування: Перетворення файлу, закодованого кодом Хемінга, назад у текстовий файл.
  • Виправлення помилок: Автоматичне виявлення та виправлення одиночних бітових помилок у кожному блоці під час декодування.
  • Налаштування блоку: Можливість задавати довжину інформаційного блоку (m) через командний рядок.
  • Інтерфейс: Простий інтерфейс командного рядка для взаємодії з користувачем.

Вимоги

  • Python 3.x (перевірено на Python 3.13+)
  • Жодних зовнішніх бібліотек не потрібно (використовуються тільки вбудовані math та os).

Як використовувати

  1. Клонуйте репозиторій або завантажте файл hamming_coder.py.
  2. Підготуйте вхідний текстовий файл (наприклад, input.txt) з текстом, який ви хочете закодувати. Використовуйте прості ASCII символи (латиниця, цифри, стандартні розділові знаки). Найпростіше розмістити цей файл у тій самій папці, що й hamming_coder.py.
  3. Запустіть скрипт з терміналу або командного рядка, перебуваючи у папці проекту:
    python hamming_coder.py
  4. Дотримуйтесь інструкцій на екрані:
    • Оберіть режим: encode (для кодування) або decode (для декодування).
    • Введіть шлях до вхідного файлу (наприклад, input.txt, якщо він у тій самій папці).
    • Введіть шлях до вихідного файлу (наприклад, encoded.txt для режиму encode або decoded.txt для режиму decode). Програма створить цей файл.
    • Введіть бажану довжину інформаційного блоку m (наприклад, 16 або 32).

Приклад сесії кодування

--- Кодер/Декодер Хемінга ---
Оберіть режим: 'encode' (кодувати), 'decode' (декодувати), або 'exit' для виходу: encode
Введіть шлях до вхідного файлу: input.txt
Введіть шлях до вихідного файлу: encoded.txt
Введіть довжину інформаційного блоку (m, ціле число > 0, наприклад, 8, 16, 32): 16
Кодування файлу 'input.txt' у 'encoded.txt' з m=16...
Параметри коду: k=5, n=21
Залишилось 8 біт в буфері. Обробка останнього блоку...
Доповнено 8 нулями до m=16.
Файл 'input.txt' успішно закодовано у 'encoded.txt'.
Всього оброблено блоків: 49

About

Implementation of Hamming code for error detection and correction. This Python application encodes/decodes text files using the 'ASCII -> binary -> Hamming code' scheme, allowing variable information block size (m). Developed for Work 1 in "Program and Data Security".

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages