fn xor_encrypt_decrypt(input: &str, key: &str) -> String {
let key_bytes = key.as_bytes();
input
.bytes()
.enumerate()
.map(|(i, byte)| byte ^ key_bytes[i % key_bytes.len()])
.map(|byte| byte as char)
.collect()
}
fn main() {
let s = "May the Force be with you.";
let key = "Obelus"; // String key for XOR operation
// Encrypt the string
let encrypted = xor_encrypt_decrypt(s, key);
println!("Encrypted: {}", encrypted);
// Decrypt the string (using the same key)
let decrypted = xor_encrypt_decrypt(&encrypted, key);
println!("Decrypted: {}", decrypted);
}
/*
run:
Encrypted: L*B#* BU&L:L
Decrypted: May the Force be with you.
*/