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 от введённого пароля
- Поддержка как папок (с рекурсией), так и одиночных файлов
- Скрипт-сканер игнорирует символьные ссылки и битые файлы
- Встроенный автотест, проверяющий корректность шифрования/дешифрования
Класс Crypt реализует паттерн Singleton:
- Гарантируется только один экземпляр объекта
- Конструктор приватный, создание напрямую запрещено
- Копирование и присваивание удалены
- Общая точка доступа через
Crypt::getInstance() - Используется для хранения текущего пароля и унификации вызовов
| Файл | Назначение |
|---|---|
main.cpp |
Точка входа, парсинг аргументов |
scanner.cpp |
Рекурсивный обход директорий |
aes.cpp |
Шифрование/дешифровка через OpenSSL (AES-256) |
crypt.cpp |
Связывает логику шифрования с файловой системой |
Для автоматической проверки результата реализован bash-скрипт test.sh, который:
- Считает SHA256-хеш файла
- Шифрует его
- Расшифровывает
- Проверяет, совпадает ли результат с исходным