Веб-приложение для шифрования изображений и текстовых файлов
Веб-приложение, построенное на Spring Boot. Предоставляет защищенный интерфейс для шифрования и дешифрования текстовых и бинарных файлов с использованием множества криптографических алгоритмов. Включает полную систему аутентификации пользователей и контейнеризированную инфраструктуру для развертывания.
Пример использования на рисунках 1-7. Можно так же шифровать изображения :))
Приложение следует классической слоеной архитектуре Spring Boot (Controller-Service-Repository) с выделенным уровнем безопасности и утилитами.
- Backend:
Java 21— Основной язык.Spring Boot 3— Фреймворк (Web, Security, Data JPA).Spring Security— Аутентификация и авторизация.
- Data & Messaging:
PostgreSQL— Основная реляционная база данных.Spring Data JPA— Работа с БД.RabbitMQ— Асинхронная обработка задач в очереди.
- Infrastructure & Tools:
Gradle— Сборка проекта и управление зависимостями.Docker&Docker Compose— Контейнеризация и оркестрация сервисов (приложение, БД, RabbitMQ).Liquibase— Управление миграциями базы данных.
| Пакет | Ключевые классы | Что делают |
|---|---|---|
controller/ |
AuthController, EncryptionController |
REST API (конечные точки), обработка HTTP-запросов и ответов. |
service/ |
UserService, EncryptionService |
Содержит бизнес-логику (управление пользователями, организация процесса шифрования). |
repository/ |
UserRepository (JPA-интерфейс) |
Уровень доступа к данным для сущности User. |
model/ |
User (JPA-сущность) |
Модель данных, представляющая зарегистрированного пользователя в БД. |
security/ |
SecurityConfig, CustomUserDetailsService |
Настраивает Spring Security, аутентификацию и авторизацию. |
util/encryption/ |
AESEncryption, CaesarCipher, XORCipher, VigenereCipher |
Конкретные реализации алгоритмов шифрования. |
config/ |
RabbitMQConfig, WebConfig |
Конфигурация для очереди сообщений (RabbitMQ) и веб-настроек. |
util/ |
FileUtil |
Вспомогательные методы для работы с файлами. |
- Аутентификация пользователя: Пользователь регистрируется или входит через
AuthController.SecurityConfigзащищает все конечные точки. - Загрузка файла: Аутентифицированный пользователь отправляет файл через конечную точку
/encryptили/decryptвEncryptionController. - Сервисный слой:
EncryptionServiceполучает запрос, проверяет его и выбирает подходящий класс-алгоритм из пакетаutil/encryption/(например,AESEncryption). - Выполнение алгоритма: Выбранный шифр (
AESEncryption,CaesarCipherи т.д.) выполняет криптографическую операцию над байтами файла. - Ответ: Обработанный (зашифрованный/расшифрованный) файл передается обратно в браузер пользователя для скачивания.
- Пользователь (
model/User): JPA-сущность, хранящаяся в PostgreSQL. Поля:id,username,password(хэширован с BCrypt) иroles. - Безопасность (
security/):SecurityConfigнастраивает безопасность HTTP, процесс входа/выхода и управление сессиями.CustomUserDetailsServiceзагружает данные пользователя для аутентификации.
Приложение использует серверный рендеринг с Thymeleaf:
login.html,register.html: Страницы аутентификации.dashboard.html: Главная страница пользователя после входа.encrypt.html,decrypt.html: Формы для загрузки файлов и выбора алгоритма.
- Java 21
- Gradle
- Docker и Docker Compose (для развертывания в контейнерах)
- Соберите JAR-файл:
./gradlew clean bootJar
- Запустите через Docker Compose: (Запускает приложение, PostgreSQL и RabbitMQ)
docker-compose up --build
- Откройте приложение: Перейдите по адресу http://localhost:8085
Взаимодействуйте с бэкендом напрямую через curl:
1. Регистрация пользователя:
curl -X POST http://localhost:8085/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"вашЛогин", "password":"вашПароль"}'





