| Crates.io | rotorix-core |
| lib.rs | rotorix-core |
| version | 0.1.0 |
| created_at | 2025-12-16 10:23:16.867048+00 |
| updated_at | 2025-12-16 10:23:16.867048+00 |
| description | Enigma-inspired transformation pipeline with explicit state and pluggable components |
| homepage | https://github.com/umpire274/rotorix |
| repository | https://github.com/umpire274/rotorix |
| max_upload_size | |
| id | 1987498 |
| size | 23,584 |
rotorix-core is a Rust library that implements an Enigma-inspired transformation engine, modeled as a modular and
deterministic pipeline.
It reinterprets the conceptual architecture of the historical Enigma machine — plugboard, rotors, reflector, and stepping — using modern software design principles, without making claims about cryptographic security.
The primary goals of rotorix-core are:
Architectural clarity
Enigma is treated as a transformation pipeline, not as a cipher to be “fixed” or hardened.
Explicit state management
All state is external, reproducible, and snapshot-friendly.
Deterministic behavior
Given the same configuration and initial state, transformations are fully deterministic.
Modularity and extensibility
Historical-style components and modern transformation strategies can coexist.
Library-first design
No assumptions are made about transport, UI, or application layer.
rotorix-core Isrotorix-core Is NotTo avoid confusion, rotorix-core is not:
No security guarantees are provided.
If you need secure encryption, use established and audited libraries.
Data flows through the following stages:
Input
→ Plugboard
→ Rotors (forward)
→ Reflector
→ Rotors (reverse)
→ Plugboard
→ Output
After each processed symbol, the internal state is updated via a stepping strategy.
The transformation state is represented by a dedicated structure, separate from component logic.
This enables:
All transformation stages implement a common interface, allowing them to be composed freely.
Examples include:
rotorix-core follows Semantic Versioning.
< 1.0.0 are considered unstable1.0.0Current development target: v0.1.0
⚠️ The API is still evolving. The following example is illustrative only.
use enigma_core::{EnigmaMachine, EnigmaState};
let machine = EnigmaMachine::new(/* configuration */) ?;
let mut state = EnigmaState::default ();
let encrypted = machine.process_bytes(b"HELLO", & mut state);
// Reset state to decrypt
let mut state2 = EnigmaState::default ();
let decrypted = machine.process_bytes( & encrypted, & mut state2);
assert_eq!(decrypted, b"HELLO");
This project is licensed under the MIT License.