Refactor some more, done for now
This commit is contained in:
24
src/set4.rs
24
src/set4.rs
@@ -13,10 +13,10 @@ pub fn challenge25() {
|
||||
// function, like, "edit(ciphertext, key, offset, newtext)".
|
||||
fn edit(ciphertext: &Bytes, key: &Bytes, offset: usize, newtext: &Vec<u8>) -> Bytes {
|
||||
let mut plaintext = ctr::decrypt(key, 0, ciphertext);
|
||||
if offset + newtext.len() > plaintext.len() {
|
||||
panic!("challenge25 - edit - out of bounds");
|
||||
}
|
||||
|
||||
assert!(
|
||||
offset + newtext.len() <= plaintext.len(),
|
||||
"challenge25 - edit - out of bounds"
|
||||
);
|
||||
plaintext.0[offset..(newtext.len() + offset)].copy_from_slice(&newtext[..]);
|
||||
ctr::encrypt(key, 0, &plaintext)
|
||||
}
|
||||
@@ -44,9 +44,7 @@ pub fn challenge26() {
|
||||
fn encrypt(input: &str, key: &Bytes) -> Bytes {
|
||||
let mut r = String::new();
|
||||
for c in input.chars() {
|
||||
if c == ';' || c == '=' {
|
||||
panic!("encrypt: invalid char {}", c);
|
||||
}
|
||||
assert!(!(c == ';' || c == '='), "encrypt: invalid char {}", c);
|
||||
}
|
||||
r.push_str("comment1=cooking%20MCs;userdata=");
|
||||
r.push_str(input);
|
||||
@@ -101,10 +99,10 @@ pub fn challenge27() {
|
||||
|
||||
fn modify(cipher: &Bytes) -> Bytes {
|
||||
// C_1, C_2, C_3 -> C_1, 0, C_1
|
||||
let c1 = cipher.get_block(0, 16).0;
|
||||
let mut modified = c1.to_vec();
|
||||
let mut c1 = cipher.get_block(0, 16).0;
|
||||
let mut modified = c1.clone();
|
||||
modified.append(&mut vec![0; 16]);
|
||||
modified.append(&mut c1.to_vec());
|
||||
modified.append(&mut c1);
|
||||
Bytes(modified)
|
||||
}
|
||||
|
||||
@@ -217,8 +215,8 @@ pub fn challenge29() {
|
||||
|
||||
// forge message: original-message || glue-padding || new-message
|
||||
forged_message = message.0.to_vec();
|
||||
forged_message.append(&mut glue_padding.to_vec());
|
||||
forged_message.append(&mut new_message.to_vec());
|
||||
forged_message.append(&mut glue_padding.clone());
|
||||
forged_message.append(&mut new_message.clone());
|
||||
let r = sha1::verify(&Bytes(forged_message.to_vec()), &key, &mac_forged);
|
||||
if r {
|
||||
break;
|
||||
@@ -290,7 +288,7 @@ pub fn challenge30() {
|
||||
forged_message = message.0.to_vec();
|
||||
forged_message.append(&mut glue_padding.to_vec());
|
||||
forged_message.append(&mut new_message.to_vec());
|
||||
let r = md4::verify(&Bytes(forged_message.to_vec()), &key, &mac_forged);
|
||||
let r = md4::verify(&Bytes(forged_message.clone()), &key, &mac_forged);
|
||||
if r {
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user