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);
|
||||
}
|
||||
|
||||
#[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