From 118cd5f72956e91c256ef066db0054a7bcd14f50 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 15 Mar 2015 17:55:33 -0400 Subject: problem 9 --- src/primitives.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/primitives.rs') diff --git a/src/primitives.rs b/src/primitives.rs index 0551e27..b0d7116 100644 --- a/src/primitives.rs +++ b/src/primitives.rs @@ -1,3 +1,5 @@ +use std; + pub fn fixed_xor (bytes1: &[u8], bytes2: &[u8]) -> Vec { return bytes1.iter() .zip(bytes2.iter()) @@ -21,6 +23,15 @@ pub fn hamming (bytes1: &[u8], bytes2: &[u8]) -> u64 { count_bits(&fixed_xor(bytes1, bytes2)[..]) } +pub fn pad_pkcs7 (block: &[u8], blocksize: u8) -> Vec { + let padding_bytes = blocksize - (block.len() % blocksize as usize) as u8; + return block + .iter() + .map(|c| *c) + .chain(std::iter::repeat(padding_bytes).take(padding_bytes as usize)) + .collect(); +} + fn count_bits (bytes: &[u8]) -> u64 { bytes.iter().map(|&c| { count_bits_byte(c) }).fold(0, |acc, n| acc + n) } -- cgit v1.2.3-54-g00ecf