Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Chaocipher/Rust/chaocipher.rust
Normal file
32
Task/Chaocipher/Rust/chaocipher.rust
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
const LEFT_ALPHABET_CT: &str = "HXUCZVAMDSLKPEFJRIGTWOBNYQ";
|
||||
const RIGHT_ALPHABET_PT: &str = "PTLNBQDEOYSFAVZKGJRIHWXUMC";
|
||||
const ZENITH: usize = 0;
|
||||
const NADIR: usize = 12;
|
||||
const SEQUENCE: &str = "WELLDONEISBETTERTHANWELLSAID";
|
||||
|
||||
fn cipher(letter: &char, left: &String, right: &String) -> (usize, char) {
|
||||
let pos = right.find(*letter).unwrap();
|
||||
let cipher = left.chars().nth(pos).unwrap();
|
||||
(pos, cipher)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut left = LEFT_ALPHABET_CT.to_string();
|
||||
let mut right = RIGHT_ALPHABET_PT.to_string();
|
||||
|
||||
let ciphertext = SEQUENCE.chars()
|
||||
.map(|letter| {
|
||||
let (pos, cipher_char) = cipher(&letter, &left, &right);
|
||||
left = format!("{}{}", &left[pos..], &left[..pos]);
|
||||
left = format!("{}{}{}{}", &left[ZENITH..1], &left[2..NADIR+2], &left[1..2], &left[NADIR+2..]);
|
||||
if pos != right.len() - 1 {
|
||||
right = format!("{}{}", &right[pos + 1..], &right[..pos + 1]);
|
||||
}
|
||||
right = format!("{}{}{}{}", &right[ZENITH..2], &right[3..NADIR+2], &right[2..3], &right[NADIR+2..]);
|
||||
cipher_char
|
||||
})
|
||||
.collect::<String>();
|
||||
|
||||
println!("Plaintext: {}", SEQUENCE);
|
||||
println!("Ciphertext: {}", ciphertext);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue