diff options
-rw-r--r-- | src/lib.rs | 11 | ||||
-rw-r--r-- | tests/lib.rs | 13 |
2 files changed, 11 insertions, 13 deletions
@@ -1,19 +1,14 @@ extern crate "rustc-serialize" as serialize; use serialize::base64::{ToBase64,STANDARD}; -use serialize::hex::{FromHex,ToHex}; -pub fn hex_to_base64 (hex: &str) -> String { - let bytes = hex.from_hex().unwrap(); +pub fn to_base64 (bytes: &[u8]) -> String { 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(); +pub fn fixed_xor (bytes1: &[u8], bytes2: &[u8]) -> Vec<u8> { return bytes1.iter() .zip(bytes2.iter()) .map(|(&a, &b)| { a ^ b }) - .collect::<Vec<u8>>() - .to_hex(); + .collect(); } diff --git a/tests/lib.rs b/tests/lib.rs index 0003696..3615b3c 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -1,16 +1,19 @@ extern crate matasano; +extern crate "rustc-serialize" as serialize; + +use serialize::hex::FromHex; #[test] fn problem_1 () { let hex = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"; let base64 = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t"; - assert_eq!(matasano::hex_to_base64(hex), base64); + assert_eq!(matasano::to_base64(&hex.from_hex().unwrap()[..]), base64); } #[test] fn problem_2 () { - let str1 = "1c0111001f010100061a024b53535009181c"; - let str2 = "686974207468652062756c6c277320657965"; - let expected = "746865206b696420646f6e277420706c6179"; - assert_eq!(matasano::fixed_xor(str1, str2), expected); + let bytes1 = "1c0111001f010100061a024b53535009181c".from_hex().unwrap(); + let bytes2 = "686974207468652062756c6c277320657965".from_hex().unwrap(); + let expected = "746865206b696420646f6e277420706c6179".from_hex().unwrap(); + assert_eq!(matasano::fixed_xor(&bytes1[..], &bytes2[..]), expected); } |