| Crates.io | caesar_cipher_enc_dec |
| lib.rs | caesar_cipher_enc_dec |
| version | 1.0.0 |
| created_at | 2023-09-05 13:20:06.853775+00 |
| updated_at | 2025-08-17 10:19:38.91953+00 |
| description | can easily use caesar cipher |
| homepage | https://github.com/T3pp31/caesar_cipher_enc_dec |
| repository | https://github.com/T3pp31/caesar_cipher_enc_dec |
| max_upload_size | |
| id | 964275 |
| size | 48,481 |
A comprehensive Caesar cipher implementation in Rust with both library and CLI functionality. Supports uppercase and lowercase letters with robust error handling.
Add this to your Cargo.toml:
[dependencies]
caesar_cipher_enc_dec = "0.6.2"
use caesar_cipher_enc_dec::caesar_cipher::{encrypt, decrypt};
fn main() {
let text = "Hello World!";
let encrypted = encrypt(text, 3);
let decrypted = decrypt(&encrypted, 3);
println!("Original: {}", text);
println!("Encrypted: {}", encrypted); // "Khoor Zruog!"
println!("Decrypted: {}", decrypted); // "Hello World!"
}
use caesar_cipher_enc_dec::caesar_cipher::{encrypt_safe, decrypt_safe};
fn main() {
match encrypt_safe("Hello World", 3) {
Ok(encrypted) => println!("Encrypted: {}", encrypted),
Err(e) => println!("Error: {}", e),
}
// Error handling for invalid inputs
match encrypt_safe("", 3) {
Ok(_) => println!("Success"),
Err(e) => println!("Error: {}", e), // "Input text cannot be empty"
}
match encrypt_safe("Test", 30) {
Ok(_) => println!("Success"),
Err(e) => println!("Error: {}", e), // "Shift value 30 is out of range (-25 to 25)"
}
}
use caesar_cipher_enc_dec::caesar_cipher::decrypt;
fn brute_force_decrypt(encrypted_text: &str) {
println!("Trying all possible shifts:");
for shift in 1..=25 {
let decrypted = decrypt(encrypted_text, shift);
println!("Shift {}: {}", shift, decrypted);
}
}
cargo install caesar_cipher_enc_dec
# Encrypt text
caesar_cipher_enc_dec encrypt --text "Hello World" --shift 3
# Decrypt text
caesar_cipher_enc_dec decrypt --text "Khoor Zruog" --shift 3
# Interactive mode
caesar_cipher_enc_dec interactive
# Brute force decryption (try all shifts)
caesar_cipher_enc_dec brute-force --text "Khoor Zruog"
# Show help
caesar_cipher_enc_dec --help
# Encrypt from file
caesar_cipher_enc_dec encrypt --file input.txt --shift 5 --output encrypted.txt
# Decrypt from file
caesar_cipher_enc_dec decrypt --file encrypted.txt --shift 5 --output decrypted.txt
# Use safe mode with error checking
caesar_cipher_enc_dec encrypt --text "Hello" --shift 3 --safe
use caesar_cipher_enc_dec::caesar_cipher::*;
fn main() {
// Mixed case with symbols
let text = "Hello, World! 123";
let encrypted = encrypt(text, 13);
println!("{} -> {}", text, encrypted); // "Hello, World! 123" -> "Uryyb, Jbeyq! 123"
// Japanese characters (unchanged)
let japanese = "ใใใซใกใฏ";
let result = encrypt(japanese, 5);
println!("{} -> {}", japanese, result); // "ใใใซใกใฏ" -> "ใใใซใกใฏ"
// Large shift values (automatically normalized)
let text = "ABC";
let encrypted = encrypt(text, 27); // Same as shift 1
println!("{} -> {}", text, encrypted); // "ABC" -> "BCD"
}
Run the comprehensive test suite:
cargo test
The library includes custom error types for better error handling:
CipherError::EmptyText: When input text is emptyCipherError::InvalidShift: When shift value is outside the valid range (-25 to 25)This implementation is optimized for performance with:
This project is licensed under the MIT License.