Skip to content

Jl4cTuk/dist-4

Repository files navigation

lab4

lab4 — CLI-инструмент для шифрования и расшифровки файлов и папок с использованием AES-256 (OpenSSL).


Постановка задачи

Разработка средства защиты информации для шифрования содержимого директории или отдельного файла с помощью алгоритма AES-256. Инструмент должен быть удобен для использования в командной строке, обладать базовыми средствами безопасности, и демонстрировать паттерн Singleton.


Использование

Шифрование/дешифрование папки:

./build/cryptor encrypt ../test qwe
./build/cryptor decrypt ../test qwe

Шифрование/дешифрование файла:

./build/cryptor encrypt ../test/test.txt qwe
./build/cryptor decrypt ../test/test.txt qwe

Пароль — любая строка, от которой будет взят SHA256-хеш (256-битный ключ).


Сборка

mkdir build && cd build
cmake ..
make

Возможности

  • Используется алгоритм AES-256-CBC на базе OpenSSL
  • Ключ шифрования — это SHA256 от введённого пароля
  • Поддержка как папок (с рекурсией), так и одиночных файлов
  • Скрипт-сканер игнорирует символьные ссылки и битые файлы
  • Встроенный автотест, проверяющий корректность шифрования/дешифрования

Паттерн Singleton

Класс Crypt реализует паттерн Singleton:

  • Гарантируется только один экземпляр объекта
  • Конструктор приватный, создание напрямую запрещено
  • Копирование и присваивание удалены
  • Общая точка доступа через Crypt::getInstance()
  • Используется для хранения текущего пароля и унификации вызовов

Структура проекта

Файл Назначение
main.cpp Точка входа, парсинг аргументов
scanner.cpp Рекурсивный обход директорий
aes.cpp Шифрование/дешифровка через OpenSSL (AES-256)
crypt.cpp Связывает логику шифрования с файловой системой

Тестирование

Для автоматической проверки результата реализован bash-скрипт test.sh, который:

  • Считает SHA256-хеш файла
  • Шифрует его
  • Расшифровывает
  • Проверяет, совпадает ли результат с исходным

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published