From 7312ac25a4a89c603cc8311f442a000433b5301b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 15 Mar 2015 04:45:21 -0400 Subject: problem 2 --- src/lib.rs | 12 +++++++++++- tests/lib.rs | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 5288655..f2e1508 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,9 +1,19 @@ extern crate "rustc-serialize" as serialize; use serialize::base64::{ToBase64,STANDARD}; -use serialize::hex::FromHex; +use serialize::hex::{FromHex,ToHex}; pub fn hex_to_base64 (hex: &str) -> String { let bytes = hex.from_hex().unwrap(); return bytes.to_base64(STANDARD); } + +pub fn fixed_xor (str1: &str, str2: &str) -> String { + let bytes1 = str1.from_hex().unwrap(); + let bytes2 = str2.from_hex().unwrap(); + return bytes1.iter() + .zip(bytes2.iter()) + .map(|(&a, &b)| { a ^ b }) + .collect::>() + .to_hex(); +} diff --git a/tests/lib.rs b/tests/lib.rs index c2c79cc..0003696 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -6,3 +6,11 @@ fn problem_1 () { let base64 = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t"; assert_eq!(matasano::hex_to_base64(hex), base64); } + +#[test] +fn problem_2 () { + let str1 = "1c0111001f010100061a024b53535009181c"; + let str2 = "686974207468652062756c6c277320657965"; + let expected = "746865206b696420646f6e277420706c6179"; + assert_eq!(matasano::fixed_xor(str1, str2), expected); +} -- cgit v1.2.3-54-g00ecf