From 802eed2e3c699e0b63d6e69a5be7058135060f17 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 15 Mar 2015 16:50:51 -0400 Subject: problem 8 --- src/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 9506289..28541e6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ extern crate "rustc-serialize" as serialize; extern crate openssl; use std::ascii::AsciiExt; +use std::collections::HashSet; use std::num::Float; use serialize::base64::{ToBase64,STANDARD}; @@ -85,6 +86,25 @@ pub fn find_single_byte_xor_encrypted_string (inputs: &[Vec]) -> Vec { return best_decrypted; } +pub fn find_aes_128_ecb_encrypted_string (inputs: &[Vec]) -> Vec { + let mut max_dups = 0; + let mut found = vec![]; + for input in inputs { + let mut set = HashSet::new(); + let mut dups = 0; + for block in input.chunks(16) { + if !set.insert(block) { + dups += 1; + } + } + if dups > max_dups { + max_dups = dups; + found = input.clone(); + } + } + return found; +} + pub fn crack_repeating_key_xor (input: &[u8]) -> Vec { let mut keysizes = vec![]; for keysize in 2..40 { -- cgit v1.2.3-54-g00ecf