enigma-cracker 0.1.0

A start-from-nothing Enigma cipher decryption library for Rust.
Documentation
# `enigma-cracker`

A start-from-nothing Enigma cipher decryption library for Rust.

`enigma-cracker` finds the most likely rotor settings, ring settings, and plugboard by brute forcing them one at a time and performing various cryptographic analysis techniques on the results.

Naturally, the crate can't perfectly identify the "correct" plaintext, so it relies on statistics like index of coincidence; Thus, it'll be more accurate with longer ciphertexts.

## Usage

```bash
cargo add enigma-cracker
```

```rust
use enigma_cracker::crack_enigma;

fn main() -> EnigmaResult<()> {

	let ciphertext = include_str!("cipher_file.txt");
	let plaintext = crack_enigma(ciphertext);

	Ok(())
}
```

```bash
cargo run --release
```

## Performance

The performance of this crate varies wildly by ciphertext length; Since Enigma machines decrypt character by character, the decryption process is `O(n)`. This crate needs to perform several million decryptions, so longer ciphertexts can drastically increase runtime.

**Make sure you run in release mode; The difference between debug and release mode can be over 10x in speed.**

I also recommend using [cargo-wizard](https://github.com/Kobzol/cargo-wizard.git) to optimize your release profile for maximum runtime performance.