diff options
author | Jesse Luehrs <doy@tozt.net> | 2015-03-15 06:30:30 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2015-03-15 06:30:38 -0400 |
commit | e297730510998b5c355e52ea3c4f14e4727d7d86 (patch) | |
tree | c40be28099d5c2c5ef7da81c6eb8c3e9aad34310 /src | |
parent | d9e8984818f1fdf121b6304dd07d474ffa66dd5e (diff) | |
download | matasano-e297730510998b5c355e52ea3c4f14e4727d7d86.tar.gz matasano-e297730510998b5c355e52ea3c4f14e4727d7d86.zip |
problem 4
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -50,6 +50,19 @@ pub fn crack_single_byte_xor (input: &[u8]) -> Vec<u8> { return decrypted; } +pub fn find_single_byte_xor_encrypted_string (inputs: &[Vec<u8>]) -> Vec<u8> { + let mut min_diff = 100.0; + let mut best_decrypted = vec![]; + for input in inputs { + let (decrypted, diff) = crack_single_byte_xor_with_confidence(input); + if diff < min_diff { + min_diff = diff; + best_decrypted = decrypted; + } + } + return best_decrypted; +} + fn crack_single_byte_xor_with_confidence (input: &[u8]) -> (Vec<u8>, f64) { let mut min_diff = 100.0; let mut best_decrypted = vec![]; @@ -63,9 +76,6 @@ fn crack_single_byte_xor_with_confidence (input: &[u8]) -> (Vec<u8>, f64) { if !decrypted.is_ascii() { continue; } - if decrypted.iter().any(|&c| { c < 0x20 || c > 0x7E }) { - continue; - } let lowercase = decrypted.to_ascii_lowercase(); let mut frequencies = [0; 26]; let mut total_frequency = 0; |