diff options
author | Jesse Luehrs <doy@tozt.net> | 2015-03-15 17:55:33 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2015-03-15 17:55:33 -0400 |
commit | 118cd5f72956e91c256ef066db0054a7bcd14f50 (patch) | |
tree | efb729099a3a4dae000bd8baa16f484e74a83191 /src/primitives.rs | |
parent | 87ec67f3a3ed76e1b186e324ac3cd3d226cf320a (diff) | |
download | matasano-118cd5f72956e91c256ef066db0054a7bcd14f50.tar.gz matasano-118cd5f72956e91c256ef066db0054a7bcd14f50.zip |
problem 9
Diffstat (limited to 'src/primitives.rs')
-rw-r--r-- | src/primitives.rs | 11 |
1 files changed, 11 insertions, 0 deletions
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<u8> { 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<u8> { + 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) } |