Make num traces argument
This commit is contained in:
parent
fc9133056c
commit
92e741ba77
1 changed files with 5 additions and 6 deletions
11
src/main.rs
11
src/main.rs
|
|
@ -118,14 +118,12 @@ fn read_msgs(path: impl AsRef<Path>) -> (Vec<[u8; 16]>, [u8; 16]) {
|
||||||
(r, last_round_key(key))
|
(r, last_round_key(key))
|
||||||
}
|
}
|
||||||
|
|
||||||
const TRACES: usize = 87;
|
fn read_traces(path: impl AsRef<Path>, num_traces: usize, capacity: usize) -> Vec<Vec<u8>> {
|
||||||
|
|
||||||
fn read_traces(path: impl AsRef<Path>, capacity: usize) -> Vec<Vec<u8>> {
|
|
||||||
let file = std::fs::File::open(path).unwrap();
|
let file = std::fs::File::open(path).unwrap();
|
||||||
|
|
||||||
let bufreader = std::io::BufReader::new(file);
|
let bufreader = std::io::BufReader::new(file);
|
||||||
|
|
||||||
let mut r: Vec<Vec<u8>> = (0..TRACES).map(|_| vec![0; capacity]).collect();
|
let mut r: Vec<Vec<u8>> = (0..num_traces).map(|_| vec![0; capacity]).collect();
|
||||||
|
|
||||||
for (i, l) in bufreader.lines().enumerate() {
|
for (i, l) in bufreader.lines().enumerate() {
|
||||||
let l = l.unwrap();
|
let l = l.unwrap();
|
||||||
|
|
@ -235,6 +233,7 @@ fn key_schedule(mut key: [u8; 16], round: usize) -> [u8; 16] {
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
struct Args {
|
struct Args {
|
||||||
|
num_traces: usize,
|
||||||
#[arg(default_value = "./alan/Task-3-example_traces/test_msgs.csv")]
|
#[arg(default_value = "./alan/Task-3-example_traces/test_msgs.csv")]
|
||||||
msgs: PathBuf,
|
msgs: PathBuf,
|
||||||
#[arg(default_value = "./alan/Task-3-example_traces/test_traces.csv")]
|
#[arg(default_value = "./alan/Task-3-example_traces/test_traces.csv")]
|
||||||
|
|
@ -254,7 +253,7 @@ fn main() {
|
||||||
println!("calculate models: {:?}", start.elapsed());
|
println!("calculate models: {:?}", start.elapsed());
|
||||||
|
|
||||||
let start = std::time::Instant::now();
|
let start = std::time::Instant::now();
|
||||||
let traces = read_traces(args.traces, cyphertext.len());
|
let traces = read_traces(args.traces, args.num_traces, cyphertext.len());
|
||||||
println!("read traces: {:?}", start.elapsed());
|
println!("read traces: {:?}", start.elapsed());
|
||||||
|
|
||||||
let start = std::time::Instant::now();
|
let start = std::time::Instant::now();
|
||||||
|
|
@ -262,7 +261,7 @@ fn main() {
|
||||||
let (max_index, max) = (0..256)
|
let (max_index, max) = (0..256)
|
||||||
.into_par_iter()
|
.into_par_iter()
|
||||||
.map(|key_hypothesis| {
|
.map(|key_hypothesis| {
|
||||||
let m = (0..TRACES)
|
let m = (0..args.num_traces)
|
||||||
.map(|trace_index| {
|
.map(|trace_index| {
|
||||||
correlation(bit, key_hypothesis, trace_index, &models, &traces).abs()
|
correlation(bit, key_hypothesis, trace_index, &models, &traces).abs()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue