Skip to content

async-human/CryptoGuard

Repository files navigation

CryptoGuard

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
Loading

Начало работы

  1. Склонируйте репозиторий.
  2. Откройте проект в Visual Studio Code.
  3. При появлении запроса нажмите Reopen in Container, чтобы запустить проект в изолированном окружении Dev Container. Это гарантирует наличие всех необходимых инструментов.

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

Проект использует Conan для управления зависимостями и CMake для сборки.

  1. Создайте директорию для сборки:

    mkdir build && cd build
  2. Установите зависимости с помощью Conan: (Выполняется один раз перед первой сборкой)

    conan install --settings=build_type=Debug --build=missing ..
  3. Соберите проект: (Выполняется каждый раз при изменениях в коде)

    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: Пароль для шифрования/дешифрования.

Примеры

  1. Создадим тестовый файл:

    echo "Hello OpenSSL crypto world!" > secret.txt
  2. Шифрование файла:

    ./CryptoGuard --command encrypt --input secret.txt --output encrypted.bin --password "my-pass-123"
  3. Дешифрование файла:

    ./CryptoGuard -c decrypt -i encrypted.bin -o decrypted.txt -p "my-pass-123"
  4. Вычисление контрольной суммы (вывод в консоль):

    ./CryptoGuard -c checksum -i secret.txt
  5. Вычисление контрольной суммы (вывод в файл):

    ./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.

About

Консольная утилита на C++20 для шифрования (AES-256), дешифрования и вычисления контрольной суммы (SHA-256) файлов с использованием OpenSSL и Boost.ProgramOptions.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors