26 lines
1.1 KiB
Rust
26 lines
1.1 KiB
Rust
use chacha20poly1305::aead::{AeadInOut, KeyInit};
|
|
use chacha20poly1305::{ChaCha20Poly1305, Key, Nonce};
|
|
use std::time::Instant;
|
|
fn main() {
|
|
let c = ChaCha20Poly1305::new(&Key::from([1u8; 32]));
|
|
let mut buf = vec![0u8; 64 * 1024];
|
|
let n = 1024; // 64 MiB
|
|
let t = Instant::now();
|
|
for i in 0..n {
|
|
let mut nb = [0u8; 12];
|
|
nb[3..11].copy_from_slice(&(i as u64).to_be_bytes());
|
|
std::hint::black_box(c.encrypt_inout_detached(&Nonce::from(nb), &[], buf.as_mut_slice().into()).unwrap());
|
|
}
|
|
let s = t.elapsed().as_secs_f64();
|
|
println!("raw seal: {:.0} MB/s", (n * 65536) as f64 / s / 1e6);
|
|
let key = [1u8; 32];
|
|
let data = vec![0u8; 64 << 20];
|
|
let t = Instant::now();
|
|
let mut out = Vec::with_capacity(data.len() + (1 << 20));
|
|
vault::crypto::stream::seal_all(&key, &data, &mut out);
|
|
println!("seal_all: {:.0} MB/s", data.len() as f64 / t.elapsed().as_secs_f64() / 1e6);
|
|
let t = Instant::now();
|
|
let n = vault::crypto::stream::open_all(&key, &mut out).unwrap();
|
|
println!("open_all: {:.0} MB/s ({n})", data.len() as f64 / t.elapsed().as_secs_f64() / 1e6);
|
|
}
|