Kristofers Solo dac009af1b
Some checks failed
CI / build-and-test (push) Has been cancelled
refactor: rename CLI to crypt and remove ECB terminology
2026-01-12 22:12:05 +02:00
2026-01-12 21:34:15 +02:00
2026-01-12 21:34:15 +02:00
2026-01-12 20:56:47 +02:00
2026-01-12 21:34:15 +02:00
2025-11-26 05:49:24 +02:00
2026-01-12 21:34:15 +02:00
2026-01-12 21:34:15 +02:00
2026-01-12 20:56:47 +02:00
2025-11-26 05:49:24 +02:00
2025-10-13 12:51:43 +03:00
2025-10-13 12:52:21 +03:00

Cipher Workshop

A Rust workspace containing implementations of various cipher algorithms, along with a command-line interface (CLI) and a web interface to interact with them.

Features

  • AES Implementation: AES-128 block cipher and CBC mode
  • DES Implementation: DES block cipher
  • Command-Line Interface: Encrypt and decrypt messages or files using the supported ciphers
  • Web Interface: Browser-based encryption with file upload, drag-and-drop, and random key/IV generation

Workspace Structure

The cipher-workshop workspace is organized into the following crates:

  • aes: Implementation of the AES cipher (block cipher and CBC mode)
  • cipher-core: Core traits and types for ciphers
  • cipher-factory: A factory for creating cipher contexts
  • crypt: A command-line interface for the ciphers
  • des: Implementation of the DES cipher
  • web: A web interface built with Leptos

Getting Started

Prerequisites

Building the Project

Clone the repository and build the workspace:

git clone https://github.com/kristofers-solo/cipher-workshop.git
cd cipher-workshop
cargo build

Usage

CLI

The CLI allows you to encrypt and decrypt messages or files using the supported ciphers.

AES (block mode)

# Encrypt a message
cargo run --bin crypt -- encrypt -a aes -k 0x2B7E151628AED2A6ABF7158809CF4F3C "Hello World"

# Decrypt a message
cargo run --bin crypt -- decrypt -a aes -k 0x2B7E151628AED2A6ABF7158809CF4F3C 0x...

AES-CBC (with IV)

# Encrypt a file
cargo run --bin crypt -- encrypt -a aes-cbc -k 0x2B7E151628AED2A6ABF7158809CF4F3C --iv 0x000102030405060708090A0B0C0D0E0F -i input.txt -o output.enc

# Decrypt a file
cargo run --bin crypt -- decrypt -a aes-cbc -k 0x2B7E151628AED2A6ABF7158809CF4F3C --iv 0x000102030405060708090A0B0C0D0E0F -i output.enc -o decrypted.txt

DES

# Encrypt a message
cargo run --bin crypt -- encrypt -a des -k 0x133457799BBCDFF1 "Hello"

# Decrypt a message
cargo run --bin crypt -- decrypt -a des -k 0x133457799BBCDFF1 0x...

Web Interface

The web interface provides a user-friendly way to interact with the ciphers, available at: https://cryptography.kristofers.xyz/

Features:

  • DES, AES, and AES-CBC encryption/decryption
  • Random key and IV generation using Web Crypto API
  • File upload with drag-and-drop support
  • File download for encrypted/decrypted output
  • Multiple output formats: Hex, Binary, Octal, Text

To run the web interface locally:

cd web
cargo leptos watch

License

This project is licensed under either of the Apache License, Version 2.0 or the MIT license, at your option.

Description
No description provided
Readme 481 KiB
Languages
Rust 90%
SCSS 7.9%
TypeScript 1.3%
Dockerfile 0.8%