summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs11
-rw-r--r--tests/lib.rs13
2 files changed, 11 insertions, 13 deletions
diff --git a/src/lib.rs b/src/lib.rs
index f2e1508..764fea2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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);
}