Java 17 · Swing · AES-256-GCM

Secure Encryption,
built for the desktop.

A modern desktop application for authenticated encryption of text and files — powered by AES-256-GCM and PBKDF2-HMAC-SHA-256 (600,000 iterations). Private, local, and open source.

AES-256-GCM PBKDF2 600K 14 Tests Pass MIT / Educational

Project Overview

A local-first desktop tool that turns strong cryptography into a simple, approachable experience — no cloud, no accounts, no telemetry.

Privacy by design

Everything runs on your machine. Files and text never leave your computer — encryption keys are derived from your password at runtime.

Text & files

Encrypt secrets, notes, or entire files. Output is Base64-encoded and saved locally for easy sharing or archival.

Authenticity

GCM authentication tags detect tampering. A wrong password or modified ciphertext fails closed — you are alerted, not silently decrypted.

Key Features

A focused feature set built around correctness, usability, and security.

Text Encryption

Encrypt and decrypt any text instantly with a password. Output is portable Base64.

File Encryption

Batch-encrypt files to Base64 .txt outputs. Decrypt them back with the same password.

Modern Swing GUI

Clean, centered interface with live status, file chooser, and readable results.

Non-blocking UI

Long file operations run on a background SwingWorker, keeping the interface responsive.

Unicode / Devanagari

UTF-8 handling and a Devanagari-capable font let you encrypt text in any language.

Safe by default

12-character minimum password, random salt & IV per encryption, and explicit error handling.

Security Features

Modern, standards-based cryptography — no home-grown algorithms.

AES-256-GCM

Authenticated encryption with a 256-bit key and a 128-bit GCM tag. Provides confidentiality and integrity in one pass.

  • 16-byte random salt per encryption
  • 12-byte random IV (nonce) per encryption
  • Detects tampering via auth tag

PBKDF2-HMAC-SHA-256

Password-based key derivation with 600,000 iterations — aligned with current OWASP guidance — slowing brute-force attacks.

  • Unique random salt for every operation
  • Derived 256-bit AES key, never stored
  • No plaintext password persists in memory longer than needed

Versioned Payload

Encrypted output carries an EDT1 magic header, salt, IV, and ciphertext — so the tool can validate and reject malformed input.

Fail-closed design

Wrong password, corrupted data, or tampered ciphertext raises explicit exceptions — never a silent, unsafe result.

Technology Stack

Java 17
Swing
Maven
AES-256-GCM
PBKDF2-HMAC-SHA-256
JUnit 5
HTML/CSS/JS
GitHub Pages

Architecture

A clean, modular Java package layout with clear separation of concerns.

main

Application entry point

gui

Swing UI & interactions

crypto

AES-GCM + PBKDF2 core

service

File encrypt/decrypt

utility

Input validation

exception

Typed error handling

Password + Salt PBKDF2 (600K) AES-256 Key AES-GCM Encrypt EDT1 + Base64

How It Works

  1. 1

    Enter password

    A strong password (12+ chars) seeds the key derivation.

  2. 2

    Derive key

    PBKDF2-HMAC-SHA-256 runs 600,000 iterations with a random salt.

  3. 3

    Encrypt

    AES-256-GCM encrypts your text or file with a random IV.

  4. 4

    Export

    Result is wrapped in the EDT1 format and Base64-encoded for safe storage.

Screenshots

Demo Video

See the tool encrypt and decrypt text and files in action.

Try It Online

A fully client-side encrypt / decrypt playground — powered by the browser's Web Crypto API. Nothing leaves your device.

Encryption / Decryption Tool

Browser-based AES-256-GCM · PBKDF2-HMAC-SHA-256

AES-256-GCM
Encrypt Text
✅ Encrypted Output (Base64)
❌ Error

This in-browser tool mirrors the Java desktop app's security model. For files and a packaged executable, use the Download section.

Download Application

Runs locally on any machine with Java 17+.

Encryption & Decryption Tool

Packaged executable JAR · ~Java 17 required · Cross-platform (Windows, macOS, Linux)

Note: The Java desktop app does not run inside GitHub Pages. This website is informational — download the JAR and run it on your computer.

Documentation

# Clone the repository
git clone https://github.com/girishshenoy16/encryption-decryption-tool-java-gui.git
cd encryption-decryption-tool-java-gui

# Build the executable JAR
mvn clean package

# Run the application
java -jar target/encryption-decryption-tool-1.0.jar

GitHub Repository

Java ⭐ Star the project 🍴 Fork & contribute 📄 Educational License
Open Repository

About the Developer

Encryption Decryption Tool

This project was built as a hands-on exploration of secure software development — combining cryptographic theory with a real, usable desktop application. It reflects a commitment to clean architecture, tested code, and privacy-respecting design.

JavaCryptographySwingSecurity

Frequently Asked Questions

Is my data sent to any server?

No. All encryption and decryption happens locally on your machine. Nothing is uploaded.

What algorithm is used?

AES-256-GCM for authenticated encryption, with keys derived via PBKDF2-HMAC-SHA-256 at 600,000 iterations.

What if I forget my password?

Encryption is keyed solely from your password. There is no recovery mechanism by design — this is what keeps it secure.

Which platforms are supported?

Any desktop OS with Java 17 or newer (Windows, macOS, Linux).

Does the website run the Java app?

No. GitHub Pages hosts this informational site only. Download the JAR to run the application locally.

Is the code tested?

Yes — 14 JUnit tests cover the crypto and file-service layers.