test non linearity
This commit is contained in:
22
src/tea3.rs
22
src/tea3.rs
@@ -394,4 +394,26 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(plaintext.to_vec(), decrypted);
|
assert_eq!(plaintext.to_vec(), decrypted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_non_linearity() {
|
||||||
|
let key = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
||||||
|
let state = vec![0; 8];
|
||||||
|
let mut cipher = Tea3::new(key, state);
|
||||||
|
cipher.init();
|
||||||
|
|
||||||
|
let mut keystream = Vec::with_capacity(72);
|
||||||
|
|
||||||
|
for _ in 0..72 {
|
||||||
|
keystream.push(cipher.next_byte());
|
||||||
|
}
|
||||||
|
|
||||||
|
let poly = Lfsr::berlekamp_massey(&keystream);
|
||||||
|
|
||||||
|
|
||||||
|
let history = &keystream[keystream.len() - (poly.len() - 1)..];
|
||||||
|
let predicted = Lfsr::predict_next_from_poly(history, &poly);
|
||||||
|
|
||||||
|
assert_ne!(predicted, cipher.next_byte());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user