QuickCrypt
██████╗ ██╗ ██╗██╗ ██████╗██╗ ██╗ ██████╗██████╗ ██╗ ██╗██████╗ ████████╗
██╔═══██╗██║ ██║██║██╔════╝██║ ██╔╝██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗╚══██╔══╝
██║ ██║██║ ██║██║██║ █████╔╝ ██║ ██████╔╝ ╚████╔╝ ██████╔╝ ██║
██║▄▄ ██║██║ ██║██║██║ ██╔═██╗ ██║ ██╔══██╗ ╚██╔╝ ██╔═══╝ ██║
╚██████╔╝╚██████╔╝██║╚██████╗██║ ██╗╚██████╗██║ ██║ ██║ ██║ ██║
╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
Encrypt. Decrypt. Sign. Verify. — Military-grade offline crypto toolkit.
Sibling to QuickTransform (
qt) — same philosophy, different domain.
Overview
QuickCrypt is a fast, offline, military-grade cryptographic toolkit — CLI and GUI — built in pure Rust. No cloud. No complexity. No secrets ever leave your machine.
- CLI (
qc) for scripts, automation, and power users - GUI (
qc-gui) for visual operations with dark/light themes - Cross-platform — Windows, Linux, macOS
- Zero config — no key stores, no daemons, no setup
Why QuickCrypt?
Developers deal with encryption daily — protecting config files, generating keys, inspecting JWTs, signing data. The tooling is painful:
| Tool | Problem |
|---|---|
openssl |
Hundreds of cryptic subcommands |
gpg |
Complex key management, steep learning curve |
| Online tools | Your secrets leave your machine |
age |
Encryption only — no JWT, HMAC, certs, TOTP |
jwt-cli |
JWT only, not a general crypto toolkit |
QuickCrypt solves all of these. One binary, two letters: qc.
Features
| Category | Operations |
|---|---|
| Encryption | AES-256-GCM, ChaCha20-Poly1305, RSA-OAEP |
| Signatures | Ed25519, RSA-PSS (IND-CCA2) |
| Key Generation | AES-128/256, RSA (2048–8192), Ed25519, passwords, random hex |
| JWT | Decode & verify (HMAC-SHA256) |
| HMAC | SHA-256, SHA-512 with constant-time verification |
| Passwords | bcrypt & Argon2id hashing + verification |
| TOTP | 2FA code generation (SHA-1 & SHA-256) |
| Certificates | X.509 inspection & expiry check |
| Tools | Strength checker, fingerprint, hex encode/decode, secure file wipe |
Screenshots
GUI
| Dark Theme — AES-256-GCM Encryption | Light Theme — RSA-4096 Key Generation |
|---|---|
![]() |
![]() |
| TOTP SHA-256 — 2FA Codes | Argon2id Password Hashing |
|---|---|
![]() |
![]() |
| Help System — 11 Tabbed Sections | Recent Actions Audit Log |
|---|---|
![]() |
![]() |
CLI
| Encryption & Decryption | Key Generation & HMAC |
|---|---|
![]() |
![]() |
Installation
From crates.io
# CLI only
# CLI + GUI
Pre-built Binaries
Download from Releases:
| Platform | CLI | GUI |
|---|---|---|
| Windows | qc.exe (~3 MB) |
qc-gui.exe (~6.6 MB) |
| Linux | qc |
qc-gui |
| macOS | qc |
qc-gui |
From Source
# CLI only
# CLI + GUI
# Binaries at target/release/qc(.exe) and target/release/qc-gui(.exe)
Linux Dependencies (GUI)
# Ubuntu/Debian
# Fedora
# Arch
Install Scripts
# Windows
# Linux
# macOS
Quick Start
# Encrypt a string (AES-256-GCM)
# Decrypt it back
# ChaCha20-Poly1305
# Generate keys
# Sign & verify
# JWT
# HMAC
# Password hashing
# TOTP 2FA
# Utilities
Launch the GUI:
CLI Commands
JSON Output
All commands support --json for machine-readable output, ideal for scripting and automation:
# {"action":"encrypt","cipher":"AES-256-GCM","strength":"STRONG","ciphertext":"..."}
# {"action":"keygen","type":"aes256","key":"a1b2c3..."}
# {"action":"hmac_verify","algorithm":"sha256","valid":true}
# {"action":"strength","rating":"STRONG","length":10,...}
In
--jsonmode, verification commands return{"valid": true/false}instead of non-zero exit codes.
Symmetric Encryption
AES-256-GCM (default) or ChaCha20-Poly1305 with Argon2id key derivation (64 MiB, 3 iterations, 4 lanes).
Passphrase policy: Minimum 8 characters, at least 2 of: uppercase, lowercase, digit, special.
Asymmetric Encryption (RSA)
RSA-OAEP with SHA-256 (IND-CCA2 secure). Key sizes: 2048–8192 bits.
Digital Signatures
Ed25519 (default, recommended) or RSA-PSS.
# Ed25519
# RSA-PSS
Key Generation
JWT Decode & Verify
HMAC
Password Hashing
TOTP / 2FA
Certificate Inspection
Secure File Wipe
3-pass overwrite (zeros → 0xFF → random) + truncate + delete.
Utilities
Security
| Feature | Implementation |
|---|---|
| Symmetric Cipher | AES-256-GCM (default) or ChaCha20-Poly1305 |
| Key Derivation | Argon2id — 64 MiB memory, 3 iterations, 4 lanes |
| Salt | 256-bit (32 bytes), cryptographically random per operation |
| RSA Padding | OAEP-SHA256 (encrypt) + PSS-SHA256 (sign) — IND-CCA2 secure |
| RSA Signing | PSS with randomized padding (upgraded from PKCS#1 v1.5) |
| RSA Key Size | Enforced 2048–8192 bits, multiples of 1024 |
| HMAC Comparison | Raw-byte constant-time via subtle crate |
| Memory Safety | Private keys in Zeroizing<String>, buffers zeroize()d on drop |
| Passphrase Policy | Minimum 8 chars, 2+ character categories required |
| Password Hashing | bcrypt (cost 4–31) and Argon2id (19 MiB, 2 iterations) |
| TOTP | Short secrets auto-padded to algorithm minimum (128-bit for SHA-256) |
| Secure Deletion | 3-pass overwrite + truncate before removal |
Known Advisory
RUSTSEC-2023-0071: The rsa 0.9 crate has a timing side-channel (Marvin Attack) in PKCS#1 v1.5 decryption. QuickCrypt mitigates this by using PSS for signing and OAEP for encryption. Tracking: RustCrypto/RSA#19.
Binary Format
[1 byte: version] [32 bytes: salt] [12 bytes: nonce] [N bytes: ciphertext + auth tag]
| Version | Cipher |
|---|---|
0x01 |
AES-256-GCM |
0x02 |
ChaCha20-Poly1305 |
Base64-encoded when printed to stdout. Decryption auto-detects the cipher from the version byte.
Library Usage
QuickCrypt exposes all crypto operations as a Rust library:
use ;
// Symmetric encryption (auto-detects cipher on decrypt)
let ct = encrypt?;
let pt = decrypt?;
// ChaCha20-Poly1305
let ct = encrypt_chacha?;
// Generic cipher selection
use CipherKind;
let ct = encrypt_with?;
let pt = decrypt_with?;
// RSA
let kp = generate_rsa_keypair?;
let ct = rsa_encrypt?;
let pt = rsa_decrypt?;
// Ed25519 signing
let kp = generate_ed25519_keypair?;
let sig = ed25519_sign?;
let ok = ed25519_verify?;
// HMAC
let mac = hmac_sign?;
let ok = hmac_verify?;
// Password hashing
let hash = bcrypt_hash?;
let ok = bcrypt_verify?;
let hash = argon2_hash?;
// TOTP
use TotpAlgorithm;
let = generate?;
// Key generation
let key = generate_aes_key?;
let pwd = generate_password?;
let fp = fingerprint;
GUI
The GUI provides the same crypto engine with a modern, themed interface:
# Build
# Run
Features:
- Dark & Light themes
- 11-section help system with tabbed navigation
- Recent Actions audit log — timestamped record of every operation
- Background threading for RSA keygen & password hashing
- Keyboard shortcuts:
Ctrl+Enter(execute),Ctrl+L(clear) - Copy to clipboard & save to file
- Real-time passphrase strength meter
Dependencies
All pure Rust. No OpenSSL. No system libraries (except platform windowing for GUI).
| Crate | Purpose |
|---|---|
aes-gcm 0.10 |
AES-256-GCM authenticated encryption |
chacha20poly1305 0.10 |
ChaCha20-Poly1305 authenticated encryption |
argon2 0.5 |
Argon2id key derivation & password hashing |
rsa 0.9 |
RSA-OAEP encryption & RSA-PSS signing |
ed25519-dalek 2 |
Ed25519 signing & verification |
jsonwebtoken 9 |
JWT decode & verify |
hmac 0.12 + sha2 0.10 |
HMAC-SHA256/SHA512 |
x509-parser 0.16 |
X.509 certificate inspection |
totp-rs 5 |
TOTP 2FA code generation |
bcrypt 0.15 |
bcrypt password hashing |
zeroize 1 |
Secure memory erasure |
subtle 2 |
Constant-time comparison |
clap 4 |
CLI argument parsing |
eframe 0.29 |
GUI framework (optional) |
Test Suite
91 tests — all passing
75 unit tests across 9 modules
16 integration tests (end-to-end CLI pipeline)
0 failures
Project Structure
src/
main.rs # CLI entry point (qc)
gui_main.rs # GUI entry point (qc-gui)
lib.rs # Library exports + shared utilities
crypto/
mod.rs # Module declarations
symmetric.rs # AES-256-GCM, ChaCha20-Poly1305, CipherKind
asymmetric.rs # RSA-OAEP, RSA-PSS, Ed25519
keys.rs # Key generation, fingerprint
jwt.rs # JWT decode & verify
hmac_auth.rs # HMAC-SHA256/512
totp.rs # TOTP 2FA (SHA-1, SHA-256)
cert.rs # X.509 certificate inspection
password.rs # bcrypt & Argon2id
secure_wipe.rs # 3-pass file destruction
build.rs # Windows resource embedding (icon)
scripts/ # Platform install scripts
tests/ # Integration tests
assets/ # Screenshots
Release Checksums
SHA-256 hashes for v1.0.0 release binaries (Windows x86_64):
ea8fcf2aa385d43a40064739fa805d7931dd864de480e033cca903a7f06d9bbc qc.exe
6fc03b0c9cf0b3c0d20392684482bdc7c826f6828183a08e181187789b5f695d qc-gui.exe
Verify with:
# Windows PowerShell
# Linux/macOS
Quick* Family
| Tool | Domain | Binary | Install |
|---|---|---|---|
| QuickTransform | Encode. Decode. Hash. Generate. | qt |
cargo install quicktransform |
| QuickCrypt | Encrypt. Decrypt. Sign. Verify. | qc |
cargo install quickcrypt |
Error Handling
QuickCrypt uses typed Result<T, String> errors throughout. Every function returns a descriptive error message on failure — no panics in library code.
CLI behaviour:
- Normal mode: errors print to stderr with colored indicators (
✗ Error: ...) and exit code 1 --jsonmode: errors return{"error": "message"}on stdout with exit code 0 (no stderr)- Verification failures in
--jsonmode return{"valid": false}instead of exit code 1
GUI behaviour:
- Errors display inline with red status labels
- All operations (success and failure) are recorded in the Recent Actions audit log
- Background operations (RSA keygen, password hashing) show spinners and report results asynchronously
Common error scenarios:
| Error | Cause | Fix |
|---|---|---|
| "Passphrase too weak" | Under 8 chars or missing categories | Use 8+ chars with mixed uppercase, lowercase, digits, symbols |
| "Invalid base64" | Corrupted ciphertext on decrypt | Ensure the full ciphertext string is passed |
| "Key size must be 2048–8192" | Invalid RSA key size | Use a power‑of‑2 value in range |
| "HMAC verification failed" | Wrong key or tampered message | Check key and message match the original |
| "Invalid TOTP secret" | Non-base32 secret | Ensure the secret uses valid base32 characters |
Troubleshooting
GUI not starting on Linux? Install GTK3 development libraries and rebuild:
Command not found after install? Add the install directory to your PATH:
Build fails on Windows? Ensure you have the MSVC toolchain installed via Visual Studio Build Tools.
License
MIT License — see LICENSE for details.
LAZYFROG | kindware.dev | GitHub







