Sign inSign up

noobdevsam/spring-project-steganography-tool

By noobdevsam

Updated 12 months ago
Archived

A steganography tool to hide text or files in images with strong AES-256 encryption.

Image
Security
API management
Web servers
0

289

noobdevsam/spring-project-steganography-tool repository overview

Spring Boot Steganography Tool

GitHub Repo Java Spring Boot

This is the official Docker image for the Spring Boot Steganography Tool, a powerful and secure application that allows you to hide text messages or files within images using the Least Significant Bit (LSB) technique.

The application provides a RESTful API for all its operations, supports robust AES-256 encryption for hidden data, and is optimized for high-concurrency with Java Virtual Threads.

Features

  • Text & File Steganography: Embed both plain text and binary files within images.
  • Strong Encryption: All hidden data is encrypted with AES-256 (CBC mode). The encryption key is derived from your password using PBKDF2 with 65,536 iterations and a unique salt for each encoding.
  • RESTful API: A comprehensive API for encoding, decoding, capacity estimation, and more.
  • High-Concurrency Ready: Utilizes Java 25 Virtual Threads to efficiently handle a large number of concurrent requests.
  • Large File Streaming: Efficiently encodes and encrypts large files by streaming them, keeping memory usage low.

How to Use This Image

1. Pull the Image

You can pull the latest stable image from Docker Hub:

docker pull noobdevsam/spring-project-steganography-tool:v1

The easiest way to run the application is with docker-compose, using the compose.yml file from the GitHub repository.

  1. Clone the repository:

    git clone https://github.com/noobdevsam/spring-project-steganography-tool.git
    cd spring-project-steganography-tool
    
  2. Start the services: This command will start the application container and a MySQL database container.

    docker compose up -d
    

The application will be available at http://localhost:8080.

3. Running with docker run (Manual Setup)

If you prefer to run the containers manually, you can use docker run.

  1. Create a Docker network:

    docker network create stego-net
    
  2. Start a MySQL Container:

    docker run -d --name db-mysql \
      -p 3306:3306 \
      --network stego-net \
      -e MYSQL_ROOT_PASSWORD=password \
      -e MYSQL_DATABASE=stego \
      -e MYSQL_USER=user \
      -e MYSQL_PASSWORD=password \
      mysql:latest
    
  3. Run the Application Container: Connect the application to the database container on the same network.

    docker run -d --name stego-app \
      -p 8080:8080 \
      --network stego-net \
      -v stego_storage:/app/storage \
      -e DATABASE_URL=jdbc:mysql://db-mysql:3306/stego \
      -e DATABASE_USER=user \
      -e DATABASE_PASSWORD=password \
      -e STORAGE_BASE_PATH=/app/storage \
      noobdevsam/spring-project-steganography-tool:v1
    
    • The -v stego_storage:/app/storage command mounts a Docker volume to persist stego images and extracted files across container restarts.

Configuration

The application is configured using environment variables. Here are the most important ones:

Environment VariableDescriptionDefault Value
DATABASE_URLJDBC URL for the MySQL database.jdbc:mysql://localhost:3306/stego
DATABASE_USERDatabase username.user
DATABASE_PASSWORDDatabase password.password
STORAGE_BASE_PATHLocal directory where files will be stored.storage
APP_CLEANUP_ENABLEDSet to true to enable the scheduled file cleanup task.true
APP_STREAM_THRESHOLD_BYTESFile size (in bytes) above which streaming is used for encoding.1000000 (1MB)
APP_EXTRACTION_TEMP_TTL_MSTime-to-live for extracted files in milliseconds.300000 (5 mins)

API and Documentation

Once running, the API is accessible on port 8080. For detailed API endpoints, examples, and more information about the project, please visit the GitHub repository.

Tag summary

Content type

Image

Digest

sha256:7db782ec3

Size

146.6 MB

Last updated

12 months ago

docker pull noobdevsam/spring-project-steganography-tool:v1