CryptoGuard — это консольная утилита для шифрования, дешифрования файлов и вычисления их контрольной суммы с использованием OpenSSL.
- Основные возможности
- Используемые технологии
- Начало работы
- Сборка проекта
- Использование
- Тестирование
- Разработка и отладка
- Шифрование: Шифрование файлов с использованием алгоритма AES-256-CBC. Ключ и вектор инициализации (IV) генерируются из пароля пользователя.
- Дешифрование: Дешифрование файлов, ранее зашифрованных этой же утилитой.
- Контрольная сумма: Расчет хеш-суммы (SHA-256) для проверки целостности файла.
- C++20
- OpenSSL: для криптографических операций.
- Boost.ProgramOptions: для обработки аргументов командной строки.
- CMake: система сборки.
- Conan: менеджер пакетов для управления зависимостями.
- GTest: фреймворк для модульного и интеграционного тестирования.
- Dev Containers: для создания изолированного и воспроизводимого окружения разработки.
graph TD
subgraph "Исходные данные"
direction LR
A["Данные (Файл)"]
P["Секрет (Пароль)"]
end
subgraph "Возможности CryptoGuard"
direction LR
E["Защита и шифрование"]
D["Восстановление из шифра"]
C["Проверка целостности"]
end
subgraph "Результат"
direction LR
O1["Защищенный файл"]
O2["Исходный файл"]
O3["Уникальный отпечаток (Checksum)"]
end
A -- используется для --> E
P -- используется для --> E
E -- создает --> O1
O1 -- используется для --> D
P -- используется для --> D
D -- восстанавливает --> O2
A -- используется для --> C
C -- создает --> O3
- Склонируйте репозиторий.
- Откройте проект в
Visual Studio Code. - При появлении запроса нажмите
Reopen in Container, чтобы запустить проект в изолированном окружении Dev Container. Это гарантирует наличие всех необходимых инструментов.
Проект использует Conan для управления зависимостями и CMake для сборки.
-
Создайте директорию для сборки:
mkdir build && cd build
-
Установите зависимости с помощью Conan: (Выполняется один раз перед первой сборкой)
conan install --settings=build_type=Debug --build=missing ..
-
Соберите проект: (Выполняется каждый раз при изменениях в коде)
conan build --settings=build_type=Debug ..
Исполняемый файл
CryptoGuardи тестыCryptoGuard_testsпоявятся в директорииbuild/.
Все команды следует выполнять из директории build.
--help: Показать справку.--command, -c: Команда (encrypt,decrypt,checksum). Обязательный.--input, -i: Входной файл. Обязательный.--output, -o: Выходной файл. Обязательный дляencryptиdecrypt.--password, -p: Пароль для шифрования/дешифрования.
-
Создадим тестовый файл:
echo "Hello OpenSSL crypto world!" > secret.txt
-
Шифрование файла:
./CryptoGuard --command encrypt --input secret.txt --output encrypted.bin --password "my-pass-123" -
Дешифрование файла:
./CryptoGuard -c decrypt -i encrypted.bin -o decrypted.txt -p "my-pass-123" -
Вычисление контрольной суммы (вывод в консоль):
./CryptoGuard -c checksum -i secret.txt
-
Вычисление контрольной суммы (вывод в файл):
./CryptoGuard -c checksum -i secret.txt -o checksum.txt
Для запуска всех модульных и интеграционных тестов выполните команду из директории build:
cd build
ctestВ Visual Studio Code настройки параметров для запуска отладчика находятся в .vscode/launch.json файле. Поскольку в этом файле уже есть одна конфигурация Launch CryptoGuard для запуска приложения, которое вычисляет контрольную сумму файла, то для запуска отладчика достаточно нажать F5 или открыть окно Run and Debug комбинацией клавиш Ctrl+Shift+D.