From 422e3018e26f236f0bc4a55d648b56ae11530c85 Mon Sep 17 00:00:00 2001 From: hal8174 Date: Sat, 5 Jul 2025 21:52:16 +0200 Subject: [PATCH] perfomance improvements --- src/main.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 3751241..80efe22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,21 +30,21 @@ static RSBOX: [u8; 256] = [ 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, ]; -fn calculate_models(ciphertexts: &[[u8; 16]]) -> Vec<[[u8; 16]; 256]> { - ciphertexts - .iter() - .map(|c| { - let mut row = [[0; 16]; 256]; +fn calculate_models(ciphertexts: &[[u8; 16]]) -> Vec> { + let mut r = vec![Vec::with_capacity(ciphertexts.len()); 256]; - for i in 0..256 { - for j in 0..16 { - row[i][j] = RSBOX[(c[j] ^ (i as u8)) as usize]; - } + for (i, c) in ciphertexts.iter().enumerate() { + for j in 0..256 { + let mut row = [0; 16]; + + for k in 0..16 { + row[k] = RSBOX[(c[k] ^ (j as u8)) as usize]; } + r[j].push(row); + } + } - row - }) - .collect() + r } fn read_msgs(path: impl AsRef) -> Vec<[u8; 16]> { @@ -108,7 +108,7 @@ fn correlation( bit: usize, key_hypothesis: usize, trace_index: usize, - cyphtertext: &[[[u8; 16]; 256]], + cyphtertext: &[Vec<[u8; 16]>], traces: &[[u8; TRACES]], ) -> f64 { let mut x = 0i64; @@ -118,7 +118,7 @@ fn correlation( let mut ysqr = 0i64; for i in 0..traces.len() { - let xi = (cyphtertext[i][key_hypothesis][bit / 8] & (1 << (bit % 8))) as i64; + let xi = (cyphtertext[key_hypothesis][i][bit / 8] & (1 << (bit % 8))) as i64; let yi = traces[i][trace_index] as i64; x += xi;