summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2015-03-16 09:42:17 -0400
committerJesse Luehrs <doy@tozt.net>2015-03-16 09:42:17 -0400
commit8da56e330ebf3141249e2f48e7ffcb7e2d65dbc0 (patch)
treee13dd5cbaae946df8ee818031778348add2d19d1
parent7340db926e570b4d6cf8bfd654dc60747349a2de (diff)
downloadmatasano-8da56e330ebf3141249e2f48e7ffcb7e2d65dbc0.tar.gz
matasano-8da56e330ebf3141249e2f48e7ffcb7e2d65dbc0.zip
factor this out
-rw-r--r--src/aes.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/aes.rs b/src/aes.rs
index eb281e2..9baf595 100644
--- a/src/aes.rs
+++ b/src/aes.rs
@@ -56,13 +56,7 @@ pub fn find_aes_128_ecb_encrypted_string (inputs: &[Vec<u8>]) -> Vec<u8> {
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;
- }
- }
+ let dups = count_duplicate_blocks(input);
if dups > max_dups {
max_dups = dups;
found = input.clone();
@@ -71,6 +65,17 @@ pub fn find_aes_128_ecb_encrypted_string (inputs: &[Vec<u8>]) -> Vec<u8> {
return found;
}
+fn count_duplicate_blocks (input: &[u8]) -> usize {
+ let mut set = HashSet::new();
+ let mut dups = 0;
+ for block in input.chunks(16) {
+ if !set.insert(block) {
+ dups += 1;
+ }
+ }
+ return dups;
+}
+
#[test]
fn test_encrypt_decrypt () {
let plaintext = b"Summertime and the wind is blowing outside in lower \